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

MySQL ทำงานอย่างไรหากฉันใช้คำหลัก INTERVAL กับวันที่ที่ไม่ถูกต้อง


อันที่จริง พฤติกรรมของ MySQL ขึ้นอยู่กับ allow_invalid_dates โหมด. หากเปิดใช้งานโหมดนี้ MySQL จะยอมรับวันที่ที่ไม่ถูกต้อง และจะคำนวณวันที่ตามวันที่ที่ถูกต้อง มิฉะนั้น หากโหมดนี้ไม่ได้ใช้งาน ระบบจะไม่ยอมรับวันที่ที่ไม่ถูกต้องและจะสร้างค่า NULL เป็นเอาต์พุต

mysql> select '2017-02-30' + INTERVAL 7 day;
+-------------------------------+
| '2017-02-30' + INTERVAL 7 day |
+-------------------------------+
| NULL                          |
+-------------------------------+
1 row in set, 1 warning (0.00 sec)

ตอนนี้หลังจากเปิดใช้งาน allow_invalid_date โหมด MySQL ยอมรับวันที่ที่ไม่ถูกต้องและดำเนินการคำนวณวันที่ดังต่อไปนี้ -

mysql> set sql_mode = allow_invalid_dates;
Query OK, 0 rows affected (0.05 sec)

mysql> select '2017-02-30' + INTERVAL 7 day;
+-------------------------------+
| '2017-02-30' + INTERVAL 7 day |
+-------------------------------+
| 2017-03-09                    |
+-------------------------------+
1 row in set (0.00 sec)

mysql> select '2017-11-31' + INTERVAL 7 day;
+-------------------------------+
| '2017-11-31' + INTERVAL 7 day |
+-------------------------------+
| 2017-12-08                    |
+-------------------------------+
1 row in set (0.00 sec)