2012-01-16 8 views
2

私はdatetimeとSQL Serverを使っています。mmm d yyyy HH:MM [AM]をSQLのdatetimeに変換するには?

私は入力します(例)Aug 4 2011 12:00AM

私はdatetime(またはsmalldatetime)にこれを変換するにはどうすればよいです。

convert(datetime, 'Aug 4 2011 12:00AM') 

編集:それは

おかげで動作します。

+0

ここからその日付を取得していますか? –

+0

システムによってnvarcharフィールドに読み込まれます。私は1つのテーブルからそれをつかみ、それを別のテーブルで使用する必要があります。そこに置くプロセスは外部的なものであり、通常のフォーマットにするためにそれを変更する方法もなく、私はそれを得るテーブルを触れることもできません。 SIGH –

+2

何が問題なのですか?私はあなたの行を試してみましたが、SQL Server 2005 SP2では何のエラーも出ません。 – bhamby

答えて

5

この完全なドキュメント ため、このリンクは、何が起こっている2008年

select convert(datetime, 'Aug 4 2011 12:00AM') as ConvertResult 

ConvertResult 
------------- 
2011-08-04 00:00:00.000 

は必ずしも信頼できない、しかし、暗黙の型変換であるSQL Server上で私のため作業を行います。日付形式の書式指定子は100で、CAST and CONVERT docsの表にあります。これを試してください:

select convert(datetime, 'Aug 4 2011 12:00AM', 100) as ConvertResult 

ConvertResult 
------------- 
2011-08-04 00:00:00.000 
+0

ハッハッハーなことをすべて入力する前に、それがうまく機能しているかどうかをチェックしておくべきだった。 –

1

(警告:テストされていませんが、これらのラインに沿ったものが動作するはずです)注意点として、これは、他の方法でうまくいかない場合はブルートフォース方式です。

declare @datestring varchar(30); 
set @datestring = 'Aug 4 2011 12:04AM'; 

select convert(datetime, 
    substring(@datestring, 8,4) + '-' + 
    case lower(left(@datestring, 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' 
    end + '-' + 
    right('00' + ltrim(rtrim(substring(@datestring, 5, 2))), 2) + ' ' + 
    substring(@datestring, 13,50) 
) as Converted; 
+0

+1は私を助けようとしています!ありがとう –

関連する問題