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. 「キャスト関数と演算子」 を参照してください。