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
str_to_date('01/01/2017', '%m/%d/%y') | str_to_date('01/01/2017', '%m/%d/%Y') :------------------------------------------------ | :------------------------------------------------ 2020-01-01 | 2017-01-01SELECT str_to_date('01/01/2017', '%m/%d/%y'),str_to_date('01/01/2017', '%m/%d/%Y')
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 中的日期时间值不正确