str_to_date() 不适用于正确的语法

str_to_date() does not work on right syntax

我正在尝试将文本从类型转换为日期类型以对描述进行排序。

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

它 returns 无效,尽管我认为它是正确的语法。

我的mysql设置有问题吗?或者只是语法错误?

似乎用一个有效的年份(然后建立一个完整的日期)工作

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

看说明书真好:

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

Unspecified date or time parts have a value of 0, so incompletely specified values in str produce a result with some or all parts set to 0:

但是后来...

If the NO_ZERO_DATE or NO_ZERO_IN_DATE SQL mode is enabled, zero dates or part of dates are disallowed. In that case, STR_TO_DATE() returns NULL and generates a warning


因此,要解决此问题,您可以更改设置或添加虚拟年份:

select str_to_date(concat('12 MAY', ' 2000'), '%e %b %Y');