【问题标题】:str_to_date() does not work on right syntaxstr_to_date() 不适用于正确的语法
【发布时间】:2019-06-03 09:18:48
【问题描述】:

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

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

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

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

【问题讨论】:

  • 只是你的syntax I think 如果从 str 中提取的日期、时间或日期时间值非法,则 STR_TO_DATE() 返回 NULL 并产生警告
  • 实际上这给了我0000-05-12,这并不奇怪,因为输入中没有年份

标签: mysql str-to-date


【解决方案1】:

阅读手册真的很好:

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');

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 2023-03-12
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      相关资源
      最近更新 更多