mysql - 将具有不同格式的字符串转换为日期

标签 mysql sql date-conversion

我有一个包含字符串列 (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/

相关文章:

mysql - 按星期几和每个主题的周总计计数总计

mysql - 两个不同值的总和列计数

java - @Where 子句在 hibernate 连接查询中不起作用

sql - 在 Oracle 中使用单个语句在表之间移动行

python - 在django模板中将str转换为int

mysql - 在 MySQL 中将具有月份名称和年份的列转换为格式为 YYYYMM 的整数

连接错误 1292 上的 MySQL 查询更新

mysql - 需要按非数字条件和 GROUP BY 对所有行求和

SQL 求和与计数

javascript - 使用javascript在pentaho中从 "yyyy-mm-dd"到 "dd/mm/yyyy"的日期格式转换