我正在使用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;
答案 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)
听起来不是很有趣。但是,列中的数据不一致甚至更糟。