日期
、DATETIME
,および时间戳
型は関連しています。このセクションでは,これらの特徴,似ている点,および異なる点に。MySQLは,セクション9.1.3 "日付リテラルと時間リテラル"で説明している複数の形式で,日期
、DATETIME
,および时间戳
値を認識します。日期
およびDATETIME
範囲の説明では,「サポトされている」とは,以前の値は機能するが,保証はないということを意味します。
日期
型は,日付部分を含むが時間部分は含まない値に使用されます。MySQLでは,日期
値の取得と表示は“YYYY-MM-DD”
形式で行われます。サポトしている範囲は“1000-01-01”
から“9999-12-31”
です。
DATETIME
型は,日付と時間の両方の部分を含む値に使用されます。MySQLでは,DATETIME
値の取得と表示は“YYYY-MM-DD HH: MM: SS”
形式で行われます。サポトしている範囲は“1000-01-01”就是
から“9999-12-31 23:59:59”
です。
时间戳
デタ型は,日付と時間の両方の部分を含む値に使用されます。时间戳
には,“1970-01-01 00:00:01”
Utcから“2038-01-19 03:14:07”
Utcの範囲があります。
DATETIME
または时间戳
値には,マe .クロ秒(6桁)までの精度で後続の小数秒部分を含めることができます。MySQL 5.6.4以降では;DATETIME
または时间戳
カラムに挿入された値の小数部はすべて破棄されずに格納されます。小数部が含まれる場合,これらの値の形式は“YYYY-MM-DD HH: MM: SS (.fraction)”
であり,DATETIME
値の範囲は“1000-01-01 00:00:00.000000”
から“9999-12-31 23:59:59.999999”
であり,时间戳
値の範囲は“1970-01-01 00:00:01.000000”
から“2038-01-19 03:14:07.999999”
です。小数部は,常に時間の残りの部分から小数点で区分する必要があります。これ以外の小数秒区切り文字は認識されません。MySQLの小数秒のサポトの詳細はセクション11.3.6 "時間値での小数秒"を参照してください。
时间戳
および(MySQL 5.6.5以降の)DATETIME
デタ型では,自動初期化と現在の日付および時間への自動更新機能が用意されています。詳細は,セクション11.3.5 " timestampおよびdatetimeの自動初期化および更新機能"を参照してください。
MySQLは,时间戳
値を,ストレージでは現在のタイムゾーンをUTCに変換し,取得ではUTCから現在のタイムゾーンに戻します。(DATETIME
などのほかの型ではこれは行われません)デフォルトでは,接続ごとの現在のタイムゾーンはサーバーの時間です。タ邮箱ムゾ邮箱ンは接続ごとに設定できます。タムゾン設定が一定であるかぎり,格納した値と同じ値に戻すことができます。时间戳
値を格納したあとで,タイムゾーンを変更して値を取り出すと,取り出された値は格納した値とは異なります。これは、同じタ。現在のタ邮箱ムゾ邮箱ンは,time_zone
システム変数の値として使用できます。詳細は,セクション10.6 " MySQL Serverでのタ"を参照してください。
無効な日期
、DATETIME
,または时间戳
値は,適切な型の「ゼロ」値 (“0000-00-00”
または“0000-00-00”就是
に変換されます。
MySQLでは日付値解釈の特定のプロパティに注意してください。
MySQLは,文字列として指定された値に,「緩やかな」形式を使用でき,この形式では,どの句読点文字でも日付部分と時間部分の区切り文字として使用できます。場合によっては,この構文は偽りになることがあります。たとえば,
“10:11:12”
などの値は,「:
」区切り文字のために時間値のように見えることがありますが,日付のコンテキストで使用された場合は,“2010-11-12”
の年と解釈されます。値“10:45:15
は,“45”
が有効な月ではないので,“0000-00-00”
に変換されます。日付および時間の部分と小数秒部分との間の区切り文字として認識される唯一の文字が小数点です。
サーバーは,月と日の値が,それぞれが1から12と1から31の範囲内にあるだけではなく,有効である必要があります。厳密モドが無効になっていると,
“2004-04-31”
のような無効な日付は“0000-00-00”
に変換され,警告メッセジが表示されます。厳密モドが有効なときは,無効な日付によってエラが発生します。このような日付を許可するには,ALLOW_INVALID_DATES
を有効にします。詳細は,セクション5.1.7 "サバSQLモド"を参照してください。MySQLは,日または月カラムにゼロを含んだ
时间戳
値や,無効な日付の値を受け入れません。このルルに対する唯一の例外は,特殊な「ゼロ」値である“0000-00-00”就是
です。MySQL 5.6.4より前では,テ,ブルから選択しない場合,
把()
は时间戳
値を文字列として扱います。(これは,从双
を指定した場合にも当てはまります。)セクション12.10 "キャスト関数と演算子"を参照してください。2桁の年を含む日付の値は,世紀が不明なためあいまいです。MySQLは次のルルを使用して2桁の年の値を解釈します。
00 - 69
の範囲の値は2000 - 2069
に変換されます。70 - 99
の範囲の値は1970 - 1999
に変換されます。
セクション11.3.8 "日付での2桁の年"も参照してください。
MySQL ServerはMAXDB
SQLモドを有効にして実行できます。この場合,时间戳
はDATETIME
と同じです。テブル作成時にこのモドが有効になっている場合,时间戳
カラムはDATETIME
カラムとして作成されます。この結果,このようなカラムはDATETIME
表示形式を使用し,同じ範囲の値を持ち,自動初期化機能や,現在の日付と時間に自動的に更新する機能はありません。セクション5.1.7 "サバSQLモド"を参照してください。