Computer >> Máy Tính >  >> Lập trình >> MySQL

Tại sao việc sử dụng các giá trị ngày có hai chữ số năm trong MySQL là không tốt?


Như chúng ta đã biết, YEAR (2) lưu trữ một năm ở định dạng 2 chữ số. Ví dụ, chúng ta có thể viết 69 để lưu trữ 1969 là một năm. Trong NĂM (2), năm có thể được chỉ định từ 1970 đến 2069 (70 đến 69).

MySQL diễn giải các giá trị năm gồm 2 chữ số với sự trợ giúp của các quy tắc sau -

  • Giá trị năm trong phạm vi 00-69 được chuyển đổi thành 2000-2069.
  • Giá trị năm trong phạm vi 70-99 được chuyển đổi thành 1970-1999.

Chúng tôi không được lưu trữ các giá trị ngày tháng ở định dạng 2 chữ số vì các giá trị được lưu trữ ở định dạng này trở nên mơ hồ do không xác định được thế kỷ.

Nó có thể được hiểu rõ ràng hơn với sự trợ giúp của ví dụ MySQL sau -

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)

Chúng tôi không chắc chắn rằng chúng tôi định nghĩa năm nào, "1900" hay "2000", bằng cách lưu trữ 00 thành "val". MySQL đang hiểu nó là năm 2000.