MySQL 5.7 STR_TO_DATE

Я использую MySQL 5.7 и хочу преобразовать некоторые строки на сегодняшний день. Я упоминал руководство здесь: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

И опробовал следующее (обратите внимание на версию 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 ответ

Решение

Как говорится в руководстве,

Если включен режим SQL NO_ZERO_DATE или NO_ZERO_IN_DATE, нулевые даты или их части запрещены. В этом случае STR_TO_DATE() возвращает NULL и генерирует предупреждение

Это приводит к тому, что в таких случаях результат будет равен NULL, потому что ваша частичная "дата" содержит нулевые значения.

Другие вопросы по тегам