MariaDBでは、UNIX_TIMESTAMP()
は、引数(または引数の欠如)に基づいてUnixタイムスタンプを返す組み込みの日付と時刻の関数です。
これは次のように機能します:
- 呼び出されたときなし 引数の場合、Unixタイムスタンプ(「1970-01-01 00:00:00」UTCからの秒数)を符号なし整数として返します。
- withと呼ばれる場合 引数の場合、引数の値を「1970-01-0100:00:00」UTCからの秒数で返します。
UNIX_TIMESTAMP()
の逆関数 FROM_UNIXTIME()
です 。
構文
UNIX_TIMESTAMP()
次の2つの方法で呼び出すことができます:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
date
は、日付文字列、日時文字列、タイムスタンプ、またはYYMMDD
の形式の数値です。 またはYYYYMMDD
。
例–引数なし
UNIX_TIMESTAMP()
を呼び出す例を次に示します。 引数なし:
SELECT UNIX_TIMESTAMP();
結果:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
これは、そのステートメントを実行したときに、1970-01-0100:00:00から1622502492秒が経過したことを示しています。
例–引数付き
引数付きの例を次に示します。
SELECT UNIX_TIMESTAMP('1970-01-02');
結果:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
次の例では、UNIX_TIMESTAMP()
を呼び出します。 2回; 1回は引数なし、もう1回はNOW()
引数として。
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
結果:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
日時文字列
上記の例では、NOW()
日時の値を返します。
この例では、日時文字列を明示的に指定します:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
結果:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
マイクロ秒
UNIX_TIMESTAMP()
マイクロ秒をサポート:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
結果:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
数値日付
数値の日付がサポートされています:
SELECT UNIX_TIMESTAMP(20201030);
結果:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
無効な引数
無効な引数が渡された場合、UNIX_TIMESTAMP()
null
を返します 警告付き:
SELECT UNIX_TIMESTAMP('Homer');
結果:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
警告を確認してください:
SHOW WARNINGS;
結果:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
引数が多すぎます
UNIX_TIMESTAMP()
の呼び出し 引数が多すぎるとエラーになります:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'