2016-07-27 75 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')