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

อะไรคือความแตกต่างระหว่าง YEAR (2) และ YEAR (4) ใน MySQL?


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