2016-08-30 3 views
0

Я запускаю MySQL 5.7 и хотел преобразовать некоторые строки на сегодняшний день. Я передал руководство здесь: http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-dateMySQL 5.7 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' 

Есть ли что-то, что мне не хватает, или это может быть ошибка?

+2

Из [Режимы сервера SQL] (https://dev.mysql.com/doc/en/sql-mode.html) (выделено мной): * * Режим SQL по умолчанию в MySQL 5.7 включает следующие режимы: 'ONLY_FULL_GROUP_BY ',' STRICT_TRANS_TABLES', ** ['NO_ZERO_IN_DATE'] (https://dev.mysql.com/doc/en/sql-mode.html#sqlmode_no_zero_in_date) **,' NO_ZERO_DATE', 'ERROR_FOR_DIVISION_BY_ZERO',' NO_AUTO_CREATE_USER' , и "NO_ENGINE_SUBSTITUTION' *". – eggyal

ответ

2

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

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

Это приводит к тому,