2016-07-29 8 views
0

テーブルから別のテーブルにデータを挿入しようとしています。最初のテーブルはvarcharで、2番目は日付です。SQLServer - 挿入時に間違った行をスキップする

私はconvertについて知っており、ほとんどの行(varcharテーブル内)は正しい形式を持っています。しかし、いくつかは間違っています。

私は70000行を持っていますが、それらのすべてを挿入しようとすると、「varcharデータ型からdatetimeデータ型への変換が範囲外の値になりました」というエラーが発生しました。 31日または1日に0を挿入した30日の月がある可能性があります。

私が必要とするのは間違ったものをスキップして残りを挿入する方法で、どの行が間違っているかを知る方法ですスーパーも役に立ちました。あなたは岩

たTHXみんな、

+0

間違ったフォーマットをフィルタリングするために 'where'節を追加してください –

+2

Try_PARSE()、TRY_CONVERT()を使用してテンポラリテーブルを新しいテーブルに挿入し、クリーンなデータでテンポラリテーブルを作成してください。 – dfundako

+0

使用しているSQL Serverの特定のバージョンのタグを追加します。 –

答えて

1

たTHX男は、私が@dfundako答えを使用しました。 TRY_CONVERTで私が間違って何行を見て(それはnullを返し原因)と右のものにコードを挿入することができましたここ

select 
TRY_CONVERT(datetime, 
CONCAT (CONVERT(VARCHAR(10),db1.AnoCreaReg),'-', 
CONVERT(VARCHAR(10),db1.MesCreaReg),'-', 
CONVERT(VARCHAR(10),db1.DiaCreaReg))end) from Herpetologia.dbo.especimenes db1 
1

あるちょうど今後の研究のために不正なレコードを除外しやすくする必要があります:

SELECT CAST(CharDateColumn as Date) 
FROM ABC 
WHERE IsDate(CharDateColumn) = 1; 
関連する問題