第11章: 列类型 / 11.3. 日期和时间类型 / 11.3.4. Y2K事宜和日期类型

MySQL本身对于2000(Y2K)是安全的(参见1.4.5节,“2000年兼容性”),但输入给MySQL的值可能不安全。任何包含两位年值的输入都会令人模糊,因为世纪不知道。这些值必须解释为四位形式,因为MySQL内部使用四位来保存年。

对于DATETIMEDATETIMESTAMPYEAR类型,MySQL使用以下规则解释含模糊年值的日期:

·         00-69范围的年值转换为2000-2069

·         70-99范围的年值转换为1970-1999

请记住这些规则只是合理猜测数据值表示什么。如果MySQL使用的启发不能产生正确的值,你应提供包含四位年值的确切输入。

ORDER BY可以正确排序有两位年的TIMESTAMPYEAR值。

部分函数如MIN()MAX()TIMESTAMPYEAR转换为一个数字。这说明使用有两位年值的值,这些函数不能工作正确。在这种情况下的修复方法是将TIMESTAMPYEAR转换为四位年格式或使用MIN(DATE_ADD(TIMESTAMP,INTERVAL 0 DAYS))