時間データ型の要約が次に紹介されます。時間を表す型の特性の詳細は、項6.3. 「日付と時刻型」を参照してください。必要とする記憶容量は 項6.5. 「データ型のストレージ要件」 に紹介されています。時間値を処理する関数については、項7.6. 「日付時刻関数」に説明されています。
DATETIME
と
DATE
範囲の説明で、「サポートされている」とは、以前の値を使用できたとしても、動作の保障はないという意味です。
日付です。サポートされている範囲は
'1000-01-01'
から
'9999-12-31'
です。MySQL
では、DATE
値を 'YYYY-MM-DD'
形式で表示しますが、文字列または数値を使って
DATE
カラムに値を指定することもできます。
日付と時刻の組み合わせです。サポートされている範囲は
'1000-01-01 00:00:00'
から '9999-12-31
23:59:59'
です。MySQL
では、DATETIME
値を 'YYYY-MM-DD
HH:MM:SS'
形式で表示しますが、文字列または数値を使って
DATETIME
カラムに値を指定することもできます。
タイムスタンプです。範囲は
'1970-01-01 00:00:01'
UTC
から '2038-01-19
03:14:07'
UTC
です。TIMESTAMP
値は、基準時刻 ('1970-01-01
00:00:00'
UTC)
からの秒数として格納されます。TIMESTAMP
は、'1970-01-01
00:00:00'
という値を表すことはできません。これは、基準時刻からの秒数が
0 であることに相当し、0 という値は
'0000-00-00
00:00:00'
、つまり「ゼロ」の
TIMESTAMP
値を表すために用いられるからです。
TIMESTAMP
カラムは
INSERT
または
UPDATE
操作の日付と時刻を記録するのに役立ちます。自分で値を指定しないかぎり、テーブルの
TIMESTAMP
カラムはデフォルトで一番最近の操作の日付と時刻に自動的に設定されます。NULL
値を指定することで、現在の日付と時刻を
TIMESTAMP
カラムに設定することもできます。自動初期設定と更新の特徴については
項6.3.1.1. 「TIMESTAMP
の特性」
の中で説明されています。
表示幅が 19 文字に固定されている
'YYYY-MM-DD HH:MM:SS'
形式の中では、TIMESTAMP
値は文字列として返されます。数字の値を得るためには
+0
をタイムスタンプカラムに加える必要があります。
MySQL4.1
より前のバージョンで使用されていた
TIMESTAMP
形式は、MySQL 5.1
ではサポートされていません。古い形式に関する情報については、MySQL3.23、4.0、4.1
のリファレンスマニュアルを参照してください。
時刻です。範囲は
-838:59:59
から
838:59:59
です。MySQL
では、TIME
値を HH:MM:SS
形式で表示しますが、文字列または数字を使って
TIME
カラムに値を指定することもできます。
2 桁、または 4
桁のフォーマットでの年です。デフォルトは
4 桁のフォーマットです。4
桁のフォーマットでは、許容値は
1901
から
2155
、そして
0000
です。2
桁の形式では、許容値は 1970 年から 2069
年を表す、70
から
69
です。MySQL
では、YEAR
値を YYYY
形式で表示しますが、文字列または数字を使って
YEAR
カラムに値を指定することもできます。
SUM()
および
AVG()
集約関数は、時間値とはうまく作動しません。(それらは値を数字に変換するので、最初の非数値文字から後ろの部分がなくなってしまいます。)この問題を回避するには、数値ユニットを変換し、集約演算を行い、時間値に変換し直すという方法があります。例:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col
))) FROMtbl_name
; SELECT FROM_DAYS(SUM(TO_DAYS(date_col
))) FROMtbl_name
;