อย่างที่เราทราบดีว่า 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