我正在尝试将文本从类型转换为日期类型以对desc进行排序。
select str_to_date('FRI 12 MAY', '%a %e %b');
即使我认为语法正确,它也会返回null。
我在mysql中的设置是否有问题?还是语法错误?
答案 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_DATE或NO_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') ;