UNIX_TIMESTAMP()

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_TIMESTAMPTIMESTAMP カラムに使用される際、関数は明示的な 「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. 「キャスト関数と演算子」 を参照してください。