2016-02-12 99 views
-2

我在我的數據庫中有一列,其日期傳入格式如下: H:m:s,d.M.yyyy。 由於mysql無法將此格式作爲日期解析,因此我不得不將此列的類型設置爲字符串。 快速前進了幾個月和幾千條數據記錄,現在我設法將傳入數據格式更改爲:yyyy-M-d H:m:s mysql可以將其解釋爲日期。如何轉換日期字符串?

所以現在我想更改舊格式H:m:s,d.M.yyyy到4個不同表格中的新格式yyyy-M-d H:m:s。之後我這樣做,我將只是改變字符串到日期的列的類型沒有任何衝突

所以我試着爲:

UPDATE myTable 
SET myColumn = REPLACE(myColumn , 'H:m:s,d.M.yyyy', 'yyyy-M-d H:m:s') 
WHERE myColumn LIKE '%H:m:s,d.M.yyyy%' 

但沒有工作,我也那麼想這一點,但我想我synthax熄滅:

UPDATE myTable的

SET myColumn = REPLACE(STR_TO_DATE(myColumn , 'H:m:s,d.M.yyyy', 'yyyy-M-d H:m:s')) 
WHERE myColumn LIKE '%H:m:s,d.M.yyyy%' 

Doesa任何人有任何建議或替代解決方案?

+2

見STR_TO_DATE - 但也許等幾個月 – Strawberry

+0

看看這個。可能是其按您的要求http://stackoverflow.com/questions/5201383/how-to-convert-a-string-to -date-in-mysql –

+0

@用戶試圖選擇它,我想要的是將其轉換... – Vrankela

回答

1
  1. 將新的日期列添加到具有日期時間數據類型的表中。
  2. 更新與重新格式化的日期新列:

UPDATE myTable SET newdatecolumn=STR_TO_DATE(myColumn , '%H:%i:%s,%d.%M.%Y')

  • 檢查所有日期是由在新列空值檢查成功轉換。這就是爲什麼你應該有一個新的專欄,沒有轉換到位。

  • 如果一切正常,然後刪除帶有文本日期的列並將新列重命名爲舊名稱。

  • 當您在該表中插入/更新日期時,修改插入/更新代碼以使用str_to_date()

  • +0

    謝謝您花時間和實際幫助我解決問題,而不是嘲笑我缺乏知識:D 您的方法有意義,但由於以下原因,它不起作用'不正確的日期時間值:'8:0:0,25.12.2015'for function str_to_date' 我甚至嘗試將您從'%H:%i:%s,%d。%M.%Y'寫入的格式轉換爲'% H:%m:%s,%d。%M.%yyyy'仍然沒有運氣:( – Vrankela

    +0

    這不是年份與模式不一致,而是時間部分和月份。 .mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format對於要使用的格式字符串,您沒有時間上的前導0,可能甚至不是日期。可以看到你自己的數據,查看一下 – Shadow

    +0

    再次非常感謝你的幫助。 e你:) 我的最終格式是:'%k:%i:%s,%e。%c。%Y' – Vrankela