Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ทำไมไม่ควรใช้ปี 2 หลัก (Two-digit Year) ในค่าวันที่ MySQL

YEAR(2) จัดเก็บปี 2 หลัก เช่น 69 → 1969 ช่วงปีที่รองรับ: 1970-2069 (เก็บเป็น 70-69)

MySQL แปลงปี 2 หลักด้วยกติกา:

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

ปัญหา: ค่า 00 อาจหมายถึง 1900 หรือ 2000 MySQL ตีความเป็น 2000 ทำให้เกิดความคลุมเครือ

ตัวอย่าง

mysql> CREATE TABLE year_test(val YEAR(2));
mysql> INSERT INTO year_test(val) VALUES('70'),('00');
mysql> SELECT * FROM year_test;
+-----+
| val |
+-----+
| 70  |
| 00  |
+-----+

mysql> SELECT * FROM year_test WHERE val = '1970';
+-----+
| val |
+-----+
| 70  |
+-----+

mysql> SELECT * FROM year_test WHERE val = '2000';
+-----+
| val |
+-----+
| 00  |
+-----+

mysql> SELECT * FROM year_test WHERE val = '1900';
Empty set

00 ถูกตีความเป็น 2000 ไม่ใช่ 1900 ควรใช้ปี 4 หลักเสมอเพื่อความชัดเจน