0

データベースでは、データはダーティです。「日付」は、データベースが文字列としてさまざまな形式で保存されていることを意味します。

データベースをクリーンアップして、日付がDATEsql形式になる新しいデータベースに配置したいと思います。

しかし、問題は、ダーティ日付の日付がさまざまな形式になっていることです。

14 sept 2012
14 SEPTEMBER 2012
14th sept 2012
14th sept 12
14 sept 12
etc

すべての日付を単一のSQLDATE形式に変換する方法は??

4

2 に答える 2

3

すべてととを想定しdate are later than or year 2000て、これtwo digits for dateat least 3 letters for month試してください。SQLフィドルはこちら

SELECT CONVERT (DATE, '20' + right(mydate,2)+
                      CASE substring(mydate,charindex(' ', mydate,0)+ 1,3)
                           when 'jan' then '01'
                           when 'feb' then '02'
                           when 'mar' then '03'
                           when 'apr' then '04'
                           when 'may' then '05'
                           when 'jun' then '06'
                           when 'jul' then '07'
                           when 'aug' then '08'
                           when 'sep' then '09'
                           when 'oct' then '10'
                           when 'nov' then '11'
                           when 'dec' then '12'
                           else 'error' end +
                      left(mydate,2))
FROM t

注:ソリューションは、指定されたデータサンプルに基づいています

于 2012-12-11T12:25:15.397 に答える
2

これを試して:

create table tmp_date(col1 varchar(100));

insert into tmp_date
VALUES('14 sept 2012'),('14 SEPTEMBER 2012'),('14th sept 2012'),('14th sept 12'),('14 sept 12')

select convert(datetime,left(col1,2)+'-'+lower(SUBSTRING(col1,CHARINDEX(' ',col1,1)+1,3))+'-'+ltrim(rtrim(reverse(LEFT(REVERSE(col1),CHARINDEX(' ',REVERSE(col1),1)))))) from tmp_date
于 2012-12-11T12:08:38.597 に答える