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

时间:2019-01-08 16:29:52

标签: mysql str-to-date

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

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

即使我认为语法正确,它也会返回null。

我在mysql中的设置是否有问题?还是语法错误?

2 个答案:

答案 0 :(得分:2)

阅读手册真的很好:

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

  

未指定的日期或时间部分的值为0,因此str中不完全指定的值会产生将部分或全部部分设置为0的结果:

但是然后...

  

如果启用了NO_ZERO_DATENO_ZERO_IN_DATE SQL模式,则不允许零日期或部分日期。在这种情况下,STR_TO_DATE()返回NULL并生成警告


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

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

答案 1 :(得分:1)

似乎在具有有效年份(然后确定完整日期)的情况下

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