MySQL 自体は西暦 2000 年問題に対応していますが(see 項1.2.5. 「西暦 2000 年対応」)、MySQL への入力値がこの問題に対応していない場合があります。2 桁の年の値を持つ入力値は、世紀がわからないためいずれもあいまいです。MySQL では年の値は内部で 4 桁を使用して格納されるため、このような値は 4 桁形式に変換する必要があります。
DATETIME
型、DATE
型、TIMESTAMP
型、YEAR
型のカラムであいまいな年の値を含む日付が指定された場合、MySQL
では、次の規則に従ってそれらの日付が解釈されます。
範囲 00-69
の年の値は
2000-2069
に変換
範囲 70-99
の年の値は
1970-1999
に変換
これらの規則では、入力したデータが何を表すかに関して、単に、妥当な推測が行われるだけです。MySQL で使用される発見的手法で正しい年の値が生成されない場合は、4 桁の年の値を含む、あいまいでない値を入力してください。
ORDER BY
では、2 桁の
YEAR/DATE/DATETIME
型が正しくソートされます。
一部の関数(MIN()
や
MAX()
など)では、TIMESTAMP/DATE
型の値が数値に変換されることに注意してください。したがって、2
桁の年を持つタイムスタンプはこれらの関数では正常に機能しません。この場合の修正方法としては、TIMESTAMP/DATE
を 4 桁の年形式に変換するか、または
MIN(DATE_ADD(timestamp,INTERVAL 0 DAYS))
のようなものを使用します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.