2016-07-27 38 views
0

我知道如何使用STR_TO_DATE(str,fmt);將改變一個特定字符串的格式,但是如果我有一個文本格式的所有不同日期的列(例如1/11/2016,1/25/2016,6/27/2015 ...)我如何將列中的所有數據轉換爲DATE格式?從我正在閱讀的所有內容看來,您需要提供每次要轉換的準確值。將列中的所有值從MySQL中的VARCHAR轉換爲DATE

+1

這樣嗎? 'str_to_date(yourfield,'%d /%m /%Y')',完成。您可以將記錄中的字段用作更新查詢的一部分,例如'更新foo設置欄=欄+ 1'是完全合法/有效的。 –

+0

你是對的 - 我在測試中得到「NULL」,但它確實有效:'update pp_drops_dev set Create_Date = str_to_date(Create_Date,'%d /%m /%Y')' –

回答

0

您可以使用多個ifnull功能爲此。

select ifnull(STR_TO_DATE(a,'%Y-%m-%d'),sTR_TO_DATE(a,'%Y-%d-%m')) from [YourTable]; 

update [YourTable] set timestamp=ifnull(STR_TO_DATE([Colum],'%Y-%m-%d'),sTR_TO_DATE(a,'%Y-%d-%m')) ; 

希望這會有所幫助。

0

由於標記B.

STR_TO_DATE(yourfield, '%d /%米/%Y'),來完成。您可以將記錄中的字段用作更新查詢的一部分,例如更新foo set bar = bar + 1是完全合法/有效的。

所以我用:

update [My_Table] 
set Create_Date = str_to_date(Create_Date, '%d/%m/%Y')