将文本字段转换为日期

时间:2014-04-29 21:24:16

标签: mysql sql sql-update

我正在使用MYSQL DB,并且有一个包含各种格式的日期值的字段,例如

1872-03-12
21 SEP 1881
July 14, 1847
1886
08 Apr 1851
10 Feb 1898
2/22/1883
01 Oct 1854
May 9,1909
30 Oct 1856
3 Nov 1856
9 Jan 1856
July 26, 1860
Feb. 16, 1896
1908-1920
24 Nov 1853
1/12/1881
03 Dec 1819
18 Sep 1883
26 Nov 1868

我想将其转换为日期格式而不是文本,当前日期字段也包含不正确的日期值,转换时我应该忽略它。

我尝试了以下但由于各种格式我没有得到好结果

Update IGNORE data set pDate = STR_TO_DATE(oldDate,'%d/%c/%Y') where pDate is null;

1 个答案:

答案 0 :(得分:2)

你必须苦心寻找格式,然后进行转换:

update ignore data
    set pdate = (case when oldDate rlike '[12][0-9]{3}-[0-1][0-9]-[0-3][0-9]'
                      then str_to_date(oldDate, '%Y-%m-%d')
                      . . .
                 end)

听起来不是很有趣。但是,列中的数据不一致甚至更糟。