2015-04-19 148 views
0

我不久前聘請了一位自由職業者來解析一個有日期時間字段的網站。在自由職業者完成後不久,我不得不將這個項目放在後臺,現在我又回到了它,當我進入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」格式爲<'6340'。我也創建了一個「date_proper」列來更新當前日期列。

我只是不能爲我的生活弄清楚正確的代碼,以不同的格式更新爲相同的統一格式。任何幫助將非常感激。

回答

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); 
+0

完美。謝謝。 –

相關問題