str_to_date () не работает с правильным синтаксисом - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь преобразовать текст из типа в тип даты для сортировки desc.

select str_to_date('FRI 12 MAY', '%a %e %b');

Возвращает ноль, хотя я думаю, что это правильный синтаксис.

Есть ли проблемы с настройками в MySQL? или просто синтаксическая ошибка?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Это действительно хорошо, чтобы прочитать руководство:

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date

Неуказанные части даты или времени имеют значение 0, поэтому не полностью указанные значения в str дают результат с некоторыми или всеми частями, установленными в 0:

Но тогда ...

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


Таким образом, чтобы исправить это, вы можете изменить настройки или добавить фиктивный год:

select str_to_date(concat('12 MAY', ' 2000'), '%e %b %Y');
0 голосов
/ 08 января 2019

Кажется, что с действительным годом (а затем построить полную дату) работает

select str_to_date('Fri 12 May 2019', '%a %e %b %Y') ;
...