為什麼在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