str_to_date 返回不正确的年份值

Posted

技术标签:

【中文标题】str_to_date 返回不正确的年份值【英文标题】:str_to_date returning incorrect year value 【发布时间】:2021-10-29 10:31:28 【问题描述】:

我正在尝试将 m/d/y 格式的日期转换为 yyyy-mm-dd。

select lastname, firstname, filingdate, str_to_date(filingdate, '%m/%d/%y') as reformattedDate
from Table;

对于返回的日期,月份和日期是正确的,但年份始终是 2020,即使原始日期中的年份范围是 2008 年到 2021 年。

Sample query results

我做错了什么?

【问题讨论】:

【参考方案1】:

%y 只能识别年份的 2 位数字,您必须使用 %Y

SELECT  str_to_date('01/01/2017', '%m/%d/%y'),str_to_date('01/01/2017', '%m/%d/%Y')
str_to_date('01/01/2017', '%m/%d/%y') | str_to_date('01/01/2017', '%m/%d/%Y') :------------------------------------------------ | :------------------------------------------------ 2020-01-01 | 2017-01-01

db小提琴here

【讨论】:

做到了。谢谢! 请不要忘记[接受它(***.com/help/someone-answers)【参考方案2】:

使用%Y 而不是%y

select lastname, firstname, filingdate,
       str_to_date(filingdate, '%m/%d/%Y') as reformattedDate

%y 是两位数的年份。 %Y 是四位数的年份。

【讨论】:

做到了。谢谢!

以上是关于str_to_date 返回不正确的年份值的主要内容,如果未能解决你的问题,请参考以下文章

#1411 - INSERT INTO...SELECT 上函数 str_to_date 的日期时间值不正确

使用 str_to_date 函数从文件中将数据加载到 MySQL 中的日期时间值不正确

str_to_date 更改年份数据 MySQL

我:正在尝试使用 STR_TO_DATE 但为啥返回 null?

SQL 中使用 STR_TO_DATE 的日期转换查询

MariaDB:如何使用STR_TO_DATE考虑本地日期格式?