0

テーブル全体でランダムな不良日付整数を適切に処理するにはどうすればよいですか?たとえば、私は時々そこにいくつかの999999999を見るので、結果としてこのクエリは爆破します。このような場合は、次のように停止するのではなく、1900年の日付を作成したいと思います。

Select convert(date,CAST(trandate as varchar(8))),
       convert(date,CAST(duedate as varchar(8))), 
        ...

FROM  SomeTable

これらのフィールドの有効な日付は、その表では次のようになります。20100924であり、このクエリにヒットすると正常に機能します。

4

2 に答える 2

3

SQL Serverのisdate組み込み関数を使用して、日付にキャストできるものがあるかどうかを確認し、それを処理できます。

例:

declare @mytable table (thedate varchar(20))
insert into @mytable values ('20100924')
insert into @mytable values ('99999')

select 
case when isdate(thedate)=1 then
    CAST(thedate as datetime)
else null end as foo
from @mytable
于 2012-11-02T20:24:42.480 に答える
2

CASEと組み合わせた式を使用して、ISDATEそれを処理できます。

SELECT CASE 
    WHEN ISDATE(MyDate) = 0 
    THEN '19000101' 
    ELSE CAST(MyDate AS varchar(8)) 
END 
AS MyCorrectDate
于 2012-11-02T20:24:23.430 に答える