将多个日期时间格式转换为单个mysql日期时间格式

时间:2015-04-19 11:50:14

标签: mysql

我不久前聘请了一位自由职业者来解析一个有日期时间字段的网站。自由职业者完成后不久我就不得不把项目放在后面,现在我又回到了它,当我进入MySQL数据库时,我注意到了一些问题。

具体来说,有两种不同的日期时间格式,我无法弄清楚如何将它们更新为统一的MySQL可排序日期时间字段

Apr 8 - 2:23 AM                                  <- for current year updates
Tue, Dec 2, 2014 06:06:00 PM          <- for all previous year updates
2014-12-02 06:06:00PM                    <- desired format

我在表格中有一个唯一的ID,因此我可以轻松选择和更新格式。所有“Apr 8 - 2:23 AM”格式都是&lt;例如'6340'。我还创建了一个“date_proper”列来更新当前日期列。

我只是不能为我的生活找出正确的代码来将不同的格式更新为相同的统一格式。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要使用str_to_date()。首先,修复date_proper列,使其为datetime。格式应该在输入和输出上处理。适当的日期存储使用原生格式:

alter table modify date_proper datetime;

然后你可以更新值:

update t
    date_proper = (case when format < '6340'
                        then str_to_date(concat(year(now), ' ', col), '%Y %b %d - %h:%i %p'
                        else str_to_date(substr(col, 5), '%b %d, %Y %h:%i:%s %p'
                   end);