如果我将 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)
广告