将多个datetime格式转换为单个mysql datetime格式

将多个datetime格式转换为单个mysql datetime格式,mysql,Mysql,不久前我雇了一个自由职业者来解析一个有datetime字段的网站。在自由撰稿人完成后不久,我不得不把这个项目放在次要位置,现在我又回到了这个项目中,当我进入MySQL数据库时,我注意到了一些问题 具体来说,有两种不同的日期时间格式,我不知道如何将它们更新为统一的MySQL可排序日期时间字段 Apr 8 - 2:23 AM <- for current year updates Tue, Dec 2, 2014 06:06:0

不久前我雇了一个自由职业者来解析一个有datetime字段的网站。在自由撰稿人完成后不久,我不得不把这个项目放在次要位置,现在我又回到了这个项目中,当我进入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,因此我可以轻松地选择和更新格式。例如,所有4月8日至凌晨2:23的格式都是<'6340'。我还创建了一个日期列来更新当前的日期列

我就是想不出正确的代码来将不同的格式更新为相同的统一格式。任何帮助都将不胜感激。

为此,您需要使用str\u to\u date。首先,将date_列固定为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);

工作得很好。非常感谢。