Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hành vi của MySQL khi dùng INTERVAL với ngày không hợp lệ

Hành vi của MySQL phụ thuộc vào chế độ allow_invalid_dates. Nếu chế độ này được bật, MySQL sẽ chấp nhận ngày không hợp lệ và thực hiện phép toán ngày tháng như bình thường. Ngược lại, nếu chế độ này tắt, MySQL sẽ không chấp nhận và trả về 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)

Sau khi bật chế độ 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                    |
+-------------------------------+
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)

Khi chế độ này bật, MySQL tự động điều chỉnh ngày vượt quá số ngày của tháng (ví dụ: 30/2 thành 9/3, 31/11 thành 8/12).