UNIX_TIMESTAMP()
, UNIX_TIMESTAMP(date)
引数なしで呼び出された場合、Unix タイムスタンプ ( '1970-01-01 00:00:00'
UTC 以来の秒数 ) を符号なしの整数として戻します。UNIX_TIMESTAMP()
が date
引数で呼び出された場合は、'1970-01-01 00:00:00'
UTC 以後の秒として引数の値が戻されます。date
は、DATE
ストリング、DATETIME
ストリング、TIMESTAMP
、またはフォーマット YYMMDD
もしくは YYYYMMDD
内のナンバーである場合があります。サーバは date
を現在の時間帯の値として解釈し、UTC の内部値に変換します。クライアントは、項4.10.8. 「MySQL サーバのタイム ゾーン サポート」 で説明されているように、独自の時間帯を設定することができます。
mysql>SELECT UNIX_TIMESTAMP();
-> 882226357 mysql>SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
-> 875996580
UNIX_TIMESTAMP
が TIMESTAMP
カラムに使用される際、関数は明示的な 「string-to-Unix-timestamp」 の変換なしに、内部タイムスタンプ値を直接戻します。UNIX_TIMESTAMP()
に範囲外の日付を渡すと、0
が戻されます。
注記 :UNIX_TIMESTAMP()
および FROM_UNIXTIME()
を使って TIMESTAMP
値と Unix タイムスタンプ値間を変換する場合、マッピングは双方向に対して 1 対 1 ではないので、変換は高損失になります。例えば、現地時間帯の変更に対する変換のため、ふたつの
UNIX_TIMESTAMP()
がふたつの TIMESTAMP
値を、同じ Unix タイムスタンプ値にマップすることが考えられます。FROM_UNIXTIME()
はその値を、本来の TIMESTAMP
値のひとつのみにマップをして返します。次が CET
時間帯で TIMESTAMP
値を使用した例です :
mysql>SELECT UNIX_TIMESTAMP('2005-03-27 03:00:00');
+---------------------------------------+ | UNIX_TIMESTAMP('2005-03-27 03:00:00') | +---------------------------------------+ | 1111885200 | +---------------------------------------+ mysql>SELECT UNIX_TIMESTAMP('2005-03-27 02:00:00');
+---------------------------------------+ | UNIX_TIMESTAMP('2005-03-27 02:00:00') | +---------------------------------------+ | 1111885200 | +---------------------------------------+ mysql>SELECT FROM_UNIXTIME(1111885200);
+---------------------------+ | FROM_UNIXTIME(1111885200) | +---------------------------+ | 2005-03-27 03:00:00 | +---------------------------+
UNIX_TIMESTAMP()
カラムを減算するには、結果を符号付きの整数にキャストする方法もあります。詳細は 項11.8. 「キャスト関数と演算子」 を参照してください。