SQL道場 日付時刻関数 UNIX_TIMESTAMP関数

SQLでUNIXタイムスタンプを取得するUNIX_TIMESTAMP関数について記載しています。

対応データベース:MySQL

UNIX_TIMESTAMP関数の文法

SELECT UNIX_TIMESTAMP() FROM テーブル
SELECT UNIX_TIMESTAMP(日付) FROM テーブル
引数
Arguments
日付
Date
返値
return value
数値型 UNIXタイムスタンプが戻ります。
Returns a numeric UNIX timestamp.

UNIX_TIMESTAMP関数は引数なしで呼び出された場合は、UNIXタイムスタンプ(GMT’1970-01-01 00:00:00’からの秒数)を戻します。引数に日付を指定した場合は引数の値をUNIXタイムスタンプ(GMT’1970-01-01 00:00:00’からの秒数)で戻ります。

引数を指定せずに UNIX_TIMESTAMP() をコールすると、’1970-01-01 00:00:00′ UTC 以降の秒数を表す Unix タイムスタンプが返されます。

引数を指定して UNIX_TIMESTAMP() をコールすると、’1970-01-01 00:00:00′ UTC 以降の秒数として引数の値が返されます。 サーバーは、date をセッションタイムゾーンの値として解釈し、UTC の内部 Unix タイムスタンプ値に変換します。 (クライアントは、セクション5.1.15「MySQL Server でのタイムゾーンのサポート」 の説明に従ってセッションタイムゾーンを設定できます。) date 引数には、DATE、DATETIME または TIMESTAMP 文字列、YYMMDD, YYMMDDhhmmss, YYYYMMDD の数値または YYYYMMDDhhmmss 形式を指定できます。 引数に時間部分が含まれている場合、オプションで小数秒部分を含めることができます。

戻り値は、引数が指定されていない場合、または引数に小数秒部分が含まれていない場合は整数、小数秒部分を含む引数が指定されている場合は DECIMAL です。

date 引数が TIMESTAMP カラムの場合、UNIX_TIMESTAMP() は内部タイムスタンプ値を直接返し、「string-to-Unix-timestamp」 の暗黙的な変換は行いません。

引数値の有効範囲は、TIMESTAMP データ型の場合と同じです: ‘1970-01-01 00:00:01.000000′ UTC から’2038-01-19 03:14:07.999999’ UTC。 UNIX_TIMESTAMP() に範囲外の日付を渡すと、0 が返されます。

UNIX_TIMESTAMP() および FROM_UNIXTIME() を使用して UTC 以外のタイムゾーンの値と Unix タイムスタンプ値の間で変換する場合、マッピングは双方向では一対一ではないため、変換は失われます。 たとえば、夏時間 (DST) などのローカルタイムゾーンの変更の規則により、UNIX_TIMESTAMP() では UTC 以外のタイムゾーンで区別される 2 つの値を同じ Unix タイムスタンプ値にマップできます。 FROM_UNIXTIME() では、その値は元の値のいずれかにのみマップされます。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_unix-timestamp

実行例

MySQLの実行例

/* MySQL UNIXタイムスタンプを取得するサンプル */
SELECT UNIX_TIMESTAMP();
UNIX_TIMESTAMP関数サンプル実行結果
/* MySQL 現在の日付をUNIXタイムスタンプで取得するサンプル */
SELECT UNIX_TIMESTAMP(CURRENT_DATE);
UNIX_TIMESTAMP関数サンプル実行結果