Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tại sao không nên dùng năm 2 chữ số trong MySQL

Kiểu YEAR(2) lưu năm 2 chữ số (ví dụ 69 cho 1969). Phạm vi: 1970-2069 (70-69). MySQL diễn giải năm 2 chữ số theo quy tắc:

  • 00-69 → 2000-2069
  • 70-99 → 1970-1999

Không nên lưu năm 2 chữ số vì gây mơ hồ về thế kỷ.

Ví dụ minh họa:

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)

Giá trị '00' được MySQL hiểu là năm 2000, không phải 1900. Gây nhầm lẫn khi truy vấn.