为什么在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年。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP