2017-11-29 23 views
0

私は以下の問題を抱えています:Sql Server - help Dateadd関数(変換の問題)

dateadd関数を使用して日付を計算する必要があります。

dateadd(d,delay),CONVERT(DATE,Started,105)) 

遅延が

開始とは異なるテーブルから取られ、その数値形式にされた問題は、私はこのタイプのエラーを受け取ります:

Messaggio 241, livello 16, stato 1, riga 14 Conversion failed when converting date and/or time from character string.

私は、その後のような何かをしようとしました:

dateadd(d,CAST(delay AS NUMERIC(8)),CONVERT(DATE,Started,105)) 

resulting in the same error :(

誰も私を助けてくれる?

+0

数値形式とは、20170130または30012017または01302017とはどういう意味ですか? –

+0

このような質問には、入力データの例が含まれている必要があります。 –

答えて

0

エラーメッセージは非常に明確です。開始列には、指定したスタイルを使用して日付に変換できない値があります。これは、日付を文字列として保存するときにテーブルデザイナーが選択したパスです。これでデータをクリーンアップする必要があります(クリーンアップして列を正しいデータ型に変換する)か、問合せを作成して不良行を回避する必要があります。それではどうしますか?

インターネットを検索して回答を得ることができます(また、そうする必要があります)。この質問はどこかに毎日掲載されています。現在のバージョンのSQL Serverを使用している場合は、次の行を使用して「不良」行を見つけることができます。

select * from dbo.mytable as tbl where try_convert(date, tbl.Started, 105) is null 
order by tbl.Started; 

そして、そのロジックを調整して、悪い行を非常に簡単に回避できます。