我正在运行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'
我有什么遗失,或者这可能是一个错误吗?
答案 0 :(得分:2)
如手册中所述,
如果启用了NO_ZERO_DATE或NO_ZERO_IN_DATE SQL模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE()返回NULL并生成警告
这会导致结果在这种情况下为NULL,因为您的部分“日期”包含零值。