テーブルから6か月以上経過したすべての行を削除しようとしています。where句の内部:IsDate()がtrueの場合にのみ部分文字列を日付としてキャストする
問題は、日付がvarchar列の部分文字列を使用して取得され、常に有効な日付ではないことです。ここで
が失敗しているクエリです:ここでは
Delete ExampleDatesTable
where CONVERT(datetime, SUBSTRING(DateField, LEN(DateField) - 18, 19)) < DATEADD(month, -6, GETDATE())
は私がしようとしているものですが、それが動作していません。
Delete ExampleDatesTable
where IsDate(SUBSTRING(DateField, LEN(DateField) - 18, 19)) = 1
AND CONVERT(datetime, SUBSTRING(DateField, LEN(DateField) - 18, 19)) < DATEADD(month, -6, GETDATE())
はこれを回避する方法はありますか?
サンプルデータを表示できますか? –
使用しているSQL Serverのバージョンは何ですか?有効な日付ではない行で何をしたいですか? –
行が有効な日付でない場合は、それらをスキップします – cjw