2012-11-02 34 views
0

我該如何優雅地處理隨機排除在桌面上的錯誤日期整數?比如我有時會看到一些9999999999,所以這個查詢就會彈出來。我想只生產1900日期在這種情況下,而不只是停止這樣的:在CAST期間處理錯誤的日期

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

FROM SomeTable 

有效日期看起來像這樣在該表中這些字段:20100924和那些做工精細,當他們打這個查詢。

+4

你應該知道,現在標記版本。如果2012年的答案可能會有所不同。 –

回答

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 
2

可以使用CASE表達ISDATE相結合來處理:

SELECT CASE 
    WHEN ISDATE(MyDate) = 0 
    THEN '19000101' 
    ELSE CAST(MyDate AS varchar(8)) 
END 
AS MyCorrectDate