อย่างที่เราทราบดีว่า YEAR(2) จะจัดเก็บปีในรูปแบบตัวเลข 2 หลัก ตัวอย่างเช่น เราสามารถเขียน 69 เพื่อเก็บปี 1969 ได้ ในปี (2) สามารถระบุปีได้ตั้งแต่ปี 1970 ถึง 2069 (70 ถึง 69)
MySQL ตีความค่าปี 2 หลักโดยใช้กฎต่อไปนี้ -
- ค่าปีในช่วง 00-69 จะถูกแปลงเป็น 2000-2069
- ค่าปีในช่วง 70-99 จะถูกแปลงเป็น 1970-1999
เราต้องไม่เก็บค่าวันที่เป็นรูปแบบ 2 หลัก เนื่องจากค่าที่จัดเก็บในรูปแบบนี้จะคลุมเครือเนื่องจากไม่ทราบศตวรรษ
สามารถเข้าใจได้ชัดเจนยิ่งขึ้นโดยใช้ตัวอย่าง 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) ไม่แน่นอนว่าปีใดที่เราหมายความถึง '1900' หรือ '2000' โดยการจัดเก็บ 00 ถึง 'val' MySQL กำลังตีความว่าเป็นปี 2000