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

เหตุใดจึงไม่ใช่แนวปฏิบัติที่ดีในการใช้ค่าวันที่กับปีสองหลักใน MySQL


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