MySQL 5.7 STR_TO_DATE

时间:2016-08-30 09:01:52

标签: mysql mysql-5.7

我正在运行MySQL 5.7并希望将某些字符串转换为日期。我在这里提到了手册: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

并尝试了以下(请注意MySQL版本)

mysql> SELECT STR_TO_DATE('9','%m');
+-----------------------+
| STR_TO_DATE('9','%m') |
+-----------------------+
| NULL                  |
+-----------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+--------------------------------------------------------+
| Level   | Code | Message                                                |
+---------+------+--------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '9' for function str_to_date |
+---------+------+--------------------------------------------------------+
1 row in set (0.00 sec)

但是从MySQL 5.7的在线手册中,我应该看到以下内容:

mysql> SELECT STR_TO_DATE('9','%m');
        -> '0000-09-00'

我有什么遗失,或者这可能是一个错误吗?

1 个答案:

答案 0 :(得分:2)

如手册中所述,

  

如果启用了NO_ZERO_DATE或NO_ZERO_IN_DATE SQL模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE()返回NULL并生成警告

这会导致结果在这种情况下为NULL,因为您的部分“日期”包含零值。