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

พฤติกรรม MySQL เมื่อใช้ INTERVAL กับวันที่ไม่ถูกต้อง (Invalid Date)

พฤติกรรมของ MySQL ขึ้นอยู่กับโหมด allow_invalid_dates หากโหมดนี้เปิดอยู่ MySQL จะยอมรับวันที่ไม่ถูกต้องและคำนวณวันที่ได้ตามปกติ แต่ถ้าโหมดนี้ปิดอยู่ 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_dates:

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                    |
+-------------------------------+

mysql> SELECT '2017-11-31' + INTERVAL 7 DAY;
+-------------------------------+
| '2017-11-31' + INTERVAL 7 DAY |
+-------------------------------+
| 2017-12-08                    |
+-------------------------------+

เมื่อเปิดโหมดนี้ MySQL จะคำนวณวันที่โดยเลื่อนวันที่เกินไปยังเดือนถัดไปอัตโนมัติ