我有一个包含字符串列 (varchar(200)) 的表,其中包含不同格式的日期。例如
may 24 1983 12:00AM
1981-01-13 00:00:00
1979-01-13 00:00:00:123
我想将日期中的此列转换为提取年份。我怎么办?我使用过 STR_TO_DATE 但效果不佳。我必须为每种不同的格式使用 SUBSTRING 吗?
MySQL 版本 5.0.95
最佳答案
有一个技巧可以检测 man page 上的有效日期.您可以使用它来确定 STR_TO_DATE
格式是否有效。
select foo,
case when length(date(str_to_date(foo,"%Y-%m-%d %H:%i:%S"))) is not null then str_to_date(foo,"%Y-%m-%d %H:%i:%S")
when length(date(str_to_date(foo,"%b %d %Y %h:%i%p"))) is not null then str_to_date(foo,"%b %d %Y %h:%i%p")
end as newdate
from my_table
为您期望的每个人设置一种格式。疯狂测试。
祝你好运。
(哦,恭喜你尝试清理了一个错误的模式!)
关于mysql - 将具有不同格式的字符串转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734054/