如果我將 INTERVAL 關鍵字與無效日期配合使用,MySQL 的行為是什麼?


實際上,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)

更新於:2019-07-30

114 次瀏覽

開啟你的 職業 生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.