Mysql 将文本字段转换为日期
我使用的是MYSQL数据库,有一个字段包含各种格式的日期值,例如Mysql 将文本字段转换为日期,mysql,sql,sql-update,Mysql,Sql,Sql Update,我使用的是MYSQL数据库,有一个字段包含各种格式的日期值,例如 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
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;
您必须费尽心思找出格式,然后进行转换:
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)
听起来不好玩。但是,在列中包含不一致的数据更糟糕