为什么在MySQL中使用两位数年份的日期值不是最佳实践?
众所周知,YEAR(2) 以两位数格式存储年份。例如,我们可以写 69 来存储 1969 年。在 YEAR(2) 中,年份可以指定为 1970 年到 2069 年 (70 到 69)。
MySQL 使用以下规则解释两位数的年份值:
- 00-69 年份值转换为 2000-2069。
- 70-99 年份值转换为 1970-1999。
我们不应该以两位数的格式存储日期值,因为以这种格式存储的值由于世纪未知而变得模糊。
通过以下 MySQL 示例可以更清楚地理解:
mysql> Create Table year_test(val year(2)); Query OK, 0 rows affected, 1 warning (0.23 sec) mysql> insert into year_test(val) values('70'); Query OK, 1 row affected (0.14 sec) mysql> insert into year_test(val) values('00'); Query OK, 1 row affected (0.06 sec) mysql> select * from year_test; +-----+ | val | +-----+ | 70 | | 00 | +-----+ 2 rows in set (0.00 sec) mysql> select * from year_test where val = '1970'; +-----+ | val | +-----+ | 70 | +-----+ 1 row in set (0.03 sec) mysql> select * from year_test where val = '2000'; +-----+ | val | +-----+ | 00 | +-----+ 1 row in set (0.00 sec) mysql> select * from year_test where val = '1900'; Empty set (0.06 sec)
将 00 存储到 ‘val’ 中,不确定是指哪一年,‘1900’ 还是 ‘2000’?MySQL 将其解释为 2000 年。
广告