YEAR(2) เก็บปีในรูปแบบ 2 หลัก ตัวอย่างเช่น เราสามารถเขียน 69 เพื่อเก็บ 1969 ต่อปี ในปี (2) สามารถระบุปีได้ตั้งแต่ปี 1970 ถึง 2069 (70 ถึง 69)
YEAR(4) เก็บปีในรูปแบบตัวเลข 4 หลัก ตัวอย่างเช่น เราต้องเขียน 19669 เพื่อเก็บ 1969 เป็นปี ในปี (4) สามารถระบุปีได้ตั้งแต่ พ.ศ. 2444 ถึง 2155
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