0

如何优雅地处理整个表中随机的错误日期整数?例如,我有时会在其中看到一些 9999999999,因此这个查询会爆炸。在这些情况下,我只想生成 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 回答