時間値を表すための日付と時間型は,日期
、时间
,DATETIME
、时间戳
,および一年
です。それぞれの時間型には,一定範囲の有効な値のほかに,MySQLでは表すことのできない無効な値の指定時に使用できる「ゼロ」値があります。时间戳
型には,後述するように,特殊な自動更新処理があります。時間型のストレジ要件にいては,セクション11.7 "デタ型のストレジ要件"を参照してください。
日付と時間型を処理するときに,次の考慮事項に留意してください。
MySQLは,標準出力形式で所定の日付または時間型の値を取得しますが,(たとえば,日付または時間型に割り当てたり,比較したりする値を指定するときに)入力した入力値に対してさまざまな形式を解釈しようとします。日付と時間型に許可されている形式の説明にいては,セクション9.1.3 "日付リテラルと時間リテラル"を参照してください。有効な値を入力する必要があります。ほかの形式で値を使用すると,予期しない結果が生じることがあります。
MySQLは,複数の形式で値を解釈しようとしますが,日付の部分は,ほかでは一般的に使用される月-日-年や日-月-年の順(
“09-04-98”
や“04-09-98”
など)ではなく,年-月-日の順(“98-09-04”
など)で常に指定する必要があります。2桁の年を含む日付の値は,世紀が不明なためあいまいです。MySQLは次のルルを使用して2桁の年の値を解釈します。
70 - 99
の範囲の値は1970 - 1999
に変換されます。00 - 69
の範囲の値は2000 - 2069
に変換されます。
セクション11.3.8 "日付での2桁の年"も参照してください。
ある時間型から別の時間型への値の変換は,セクション11.3.7 "日付と時間型間での変換"でのルルに従って行われます。
MySQLは自動的に,値が数値のコンテキストで使用される場合には日付または時間値を数値に,またはその反対に変換します。
デフォルトでMySQLは,日付または時間型の値で,範囲外であるか,それ以外で型にとって無効である値を見つけた場合,値をその型の「ゼロ」値に変換します。その例外では,範囲外の
时间
値は时间
範囲の適切な終点に切り落とされます。SQLモードを適切な値に設定することで,MySQLがサポートする日付の種類をより正確に指定できます。(セクション5.1.7 "サバSQLモド"を参照してください。)
ALLOW_INVALID_DATES
SQLモドを有効にすることによって,“2009-11-31”
などの特定の日付をMySQLに受け入れさせることができます。これは,ユ,ザ,が今後の処理のために,(たとえばWebフォ,ムで)指定した「間違っている可能性のある」値をデタベスに格納するときに役立ます。このモードでは,MySQLは,月が1から12までの範囲にあることと,日付が1から31までの範囲にあることのみ検証します。MySQLでは,
日期
またはDATETIME
カラムに,日がゼロ,または月および日がゼロである日付の格納を許可しています。これは,正確な日付がわかっていない可能性のある生年月日を格納する必要があるアプリケーションで役立ちます。この場合は,単に日付を“2009-00-00”
または“2009-01-00”
として格納します。このような日付を格納する場合は,DATE_SUB ()
やDATE_ADD ()
などの完全な日付を必要とする関数で正しい結果が返されることは期待しないでください。日付でゼロの月または日の部分を無効にするには,NO_ZERO_IN_DATE
SQLモドを有効にします。MySQLでは,「ダミの日付」として
“0000-00-00”
の「ゼロ」の値を格納できます。場合によっては,これは,零
値を使用するよりも便利であり,使用するデ。“0000-00-00”
を無効にするには,NO_ZERO_DATE
SQLモドを有効にします。连接器/ODBCで使用される「ゼロ」の日付または時間の値は,odbcがこのような値を処理できないため,
零
に自動的に変換されます。
次の表に,それぞれの型の「ゼロ」値の形式を示します。「ゼロ」値は特別ですが,表に示されている値を使用して,格納したり,明示的に参照したりできます。また,より簡単に記述できる' 0 '
や0
の値を使用してこれを行うこともできます。日付部分 (日期
、DATETIME
,および时间戳
)を含む時間型では,NO_ZERO_DATE
SQLモドが有効な場合,これらの値を使用すると警告が発生します。
デタ型 | 「ゼロ」値 |
---|---|
日期 |
“0000-00-00” |
时间 |
“就是” |
DATETIME |
“0000-00-00”就是 |
时间戳 |
“0000-00-00”就是 |
一年 |
0000 |