2017-11-13 8 views
0

varcharデータをdatetime形式に変換したいと思います。だから誰も私に方法を知らせてくれる?これは列で利用可能なサンプルデータです。SQL Serverでvarcharをdatetimeに変換する方法

enter image description here

私はこの結果を取得するには、次のもの

SELECT 
    CASE WHEN [EntryTime] = '' 
     THEN NULL 
     ELSE CONVERT(datetime2, [EntryTime]) 
    END [EntryTime] 
FROM 
    table 

を試してみました:

enter image description here

しかし、私は追加のミリ秒を必要としませんが。

だから誰でも私にdatetime形式に変換する必要があることを教えてもらえますか?他のすべての試行については

、だから、文字列から

を日付/時刻を変換する際に

の変換が失敗したとして、私はエラーを取得しています、誰も私を助けてくださいことができますか?ありがとう。

+1

は、あなたがその下に見るように、実際の問題(のためのタグを使用しない、あなたの質問に、SQLサーバーのバージョンを指定してくださいこれは、 –

答えて

-1

LEFTと連結方式(SQL2012の+)/またはキャスト又は(書式設定)変換、次いで、標準的な連結 を使用

declare @mytable as table (
entrytime varchar(100) 
) 

insert into @mytable 
values ('2017-08-31 08:23:23'), 
('2017-11-10 08:28:37.75000000'), 
('2017-10-30 08:23:37.32000000') 


select cast(left(concat(entrytime,'.000'),23) as datetime) from @mytable 

結果

2017-08-31 08:23:23.000 
2017-11-10 08:28:37.750 
2017-10-30 08:23:37.320 
0

(7)DATETIME2ように、サブ秒の幅を指定

select 
     try_cast(EntryTime as datetime2(7)) by_try_cast 
    , try_convert(datetime2(7), EntryTime) by_try_covert 

また、try_cast()またはtry_convert()を使用することをお勧めしますこれらの利点は、文字列が無効な日付である場合、NULLを返し、クエリをクラッシュさせないということです。あなたが本当にしたくない場合は

DATETIME2:

select cast(try_cast(EntryTime as datetime2(7)) as datetime) 

はそれを参照してください。http://rextester.com/YWBB31287

+0

ちょうど注:SQL Server(2012年以降)とtry_castのためのAzure SQLデータベース/ – maSTAShuFu

+0

@maSTAShuFuありがとうございます(&それらは利用可能なバージョンがあれば間違いなく使用する価値があります) –

+0

非常に賢いです。 – maSTAShuFu

関連する問題