2014-04-29 124 views
0

我使用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 
26 Nov 1868 

我想把它轉換成日期格式,而不是文本,也是當前日期字段包含錯誤的日期值,在轉換時我應該忽略它。

我試過以下,但我並沒有好的結果,由於各種格式得到

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

回答

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) 

聽起來不好玩。但是,如果列中的數據不一致則更糟糕。