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

更新於:20-Jun-2020

138 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.