Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL hoạt động như thế nào nếu tôi sử dụng từ khóa INTERVAL với ngày không hợp lệ?

Trên thực tế, hoạt động của MySQL phụ thuộc vào allow_invalid_dates chế độ. Nếu chế độ này được bật thì MySQL sẽ chấp nhận ngày không hợp lệ và nó sẽ thực hiện số học ngày như nó thực hiện với ngày hợp lệ. Ngược lại, nếu chế độ này không hoạt động thì nó sẽ không chấp nhận ngày không hợp lệ và sẽ tạo ra NULL dưới dạng đầu ra.

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

Bây giờ sau khi bật allow_invalid_date chế độ MySQL chấp nhận các ngày không hợp lệ và thực hiện số học ngày như sau -

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)