sql >> データベース >  >> RDS >> MariaDB

MariaDBでのFROM_UNIXTIME()のしくみ

    MariaDBでは、FROM_UNIXTIME() は、指定されたUNIXタイムスタンプに基づいて日時値を返す組み込みの日時関数です。

    関数を呼び出すときに、UNIXタイムスタンプを関数に渡します。

    結果は'YYYY-MM-DD HH:MM:SS'で返されます またはYYYYMMDDHHMMSS.uuuuuu 関数が文字列または数値のどちらのコンテキストで使用されているかに応じて、形式。

    値は現在のタイムゾーンで表されます。

    構文

    この関数は次のように使用できます。

    FROM_UNIXTIME(unix_timestamp)
    FROM_UNIXTIME(unix_timestamp,format)

    unix_timestampの場所 UNIXタイムスタンプであり、format 結果をフォーマットするためのオプションのフォーマット文字列です。

    次に例を示します:

    SELECT FROM_UNIXTIME(1721428321);

    結果:

    +---------------------------+
    | FROM_UNIXTIME(1721428321) |
    +---------------------------+
    | 2024-07-20 08:32:01       |
    +---------------------------+

    マイクロ秒

    マイクロ秒を含む例を次に示します。

    SELECT FROM_UNIXTIME(1721428321.123456);

    結果:

    +----------------------------------+
    | FROM_UNIXTIME(1721428321.123456) |
    +----------------------------------+
    | 2024-07-20 08:32:01.123456       |
    +----------------------------------+
    >

    数値コンテキスト

    FROM_UNIXTIME()を使用する場合 数値コンテキストでは、結果はYYYYMMDDHHMMSS.uuuuuuで返されます。 フォーマット:

    SELECT FROM_UNIXTIME(1721428321.123456) + 0;

    結果:

    +--------------------------------------+
    | FROM_UNIXTIME(1721428321.123456) + 0 |
    +--------------------------------------+
    |                20240720083201.123456 |
    +--------------------------------------+

    結果をフォーマットする

    結果をフォーマットするためにフォーマット文字列を渡す例を次に示します。

    SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');

    結果:

    +-------------------------------------------+
    | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') |
    +-------------------------------------------+
    | Saturday, 20th July 2024                  |
    +-------------------------------------------+

    FROM_UNIXTIME()で使用できるフォーマット文字列のリストについては、MariaDBの日付フォーマット文字列を参照してください。 機能。

    タイムスタンプ制限

    MariaDBのタイムスタンプの最大値は2147483647 。これは、根本的な32ビットの制限によるものです。これを超えるタイムスタンプで関数を使用すると、nullになります 返送されます。

    この制限を示す例を次に示します。

    SELECT 
        FROM_UNIXTIME(2147483647),
        FROM_UNIXTIME(2147483648);

    結果:

    +---------------------------+---------------------------+
    | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) |
    +---------------------------+---------------------------+
    | 2038-01-19 13:14:07       | NULL                      |
    +---------------------------+---------------------------+

    タイムゾーン

    FROM_UNIXTIME()の結果 現在のタイムゾーンで表されます。

    次の例では、タイムゾーンが異なる同じUNIXタイムスタンプを使用しています。

    SET time_zone = 'America/New_York';
    SELECT FROM_UNIXTIME(2147483647);

    結果:

    +---------------------------+
    | FROM_UNIXTIME(2147483647) |
    +---------------------------+
    | 2038-01-18 22:14:07       |
    +---------------------------+

    別のタイムゾーンに切り替えて、もう一度実行してください:

    SET time_zone = 'Africa/Abidjan';
    SELECT FROM_UNIXTIME(2147483647);

    結果:

    +---------------------------+
    | FROM_UNIXTIME(2147483647) |
    +---------------------------+
    | 2038-01-19 03:14:07       |
    +---------------------------+

    現在のUnixタイムスタンプ

    UNIX_TIMESTAMP()を使用する例を次に示します。 現在のUNIXタイムスタンプを返す関数:

    SELECT
        UNIX_TIMESTAMP(),
        FROM_UNIXTIME(UNIX_TIMESTAMP());

    結果:

    +------------------+---------------------------------+
    | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) |
    +------------------+---------------------------------+
    |       1621734047 | 2021-05-23 11:40:47             |
    +------------------+---------------------------------+

    引数がありません

    FROM_UNIXTIME()の呼び出し 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT FROM_UNIXTIME();

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'

    そして別の例:

    SELECT FROM_UNIXTIME( 1, 2, 3 );

    結果:

    ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'

    1. SQLで列を一意にする方法は?

    2. MariaDBで文字列と数値を連結する2つの方法

    3. Oracleシーケンス値は順序付けられていません

    4. SQLServerログ配布とディザスタリカバリのインストールと構成-2