STR_TO_DATE()从正确的格式返回错误的数据



使用MySQL 5.7,它假设从表示四位数年份和两位数月份的字符串转换,中间没有任何其他字符。

例如,运行以下语句

SELECT str_to_date('202105','%Y%m');

返回内容:160101是1601年1月,而不是2021年5月。考虑到原因中的功能,所需的论点似乎是正确的。

我无法在DBFiddle上重现您的确切结果,但我确实看到它创建了一个null,而不是预期日期。你可以做的是附加一个"01"来获得更好的日期文字:

SELECT str_to_date(concat('202105', '01'),'%Y%m%d');

点击此处查看:

https://www.db-fiddle.com/f/sbArVsLF6BVDGSrYdy8geP/0

您还需要指定日期,否则它将无法在MySQL 8.0+中工作。

您需要指定日期的所有部分,即年、月和日,以便功能正常运行。

# Incorrect Code:
SELECT str_to_date('202105','%Y%m');
# Correct Code:
SELECT str_to_date('20210501','%Y%m%d');

输出

2020-05-01

参考编号:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-迄今

相关内容

  • 没有找到相关文章

最新更新