2014-05-01 29 views
2

在現有數據庫中有一個字段CreatedOn varchar(10),其中包含一些無效日期,如99/99/9999等等。SQL Server - 獲取具有無效日期格式的所有記錄

我想所有的無效日期更改爲1990年1月1日,這樣我就可以通過使用

ALTER TABLE xyzAlter Column CreatedOn DateTime 

此列轉換爲datetime,但它給錯誤:

Msg 242, Level 16, State 3, Line 2 
The conversion of a varchar data type to a datetime 
    data type resulted in an out-of-range value. 

是有沒有辦法獲得所有不正確日期時間格式的記錄?

回答

4

嘗試:

select * from yourTable WHERE ISDATE(yourColumn)!=1 

見:ISDATE(),則返回1,如果該表達式是有效的日期,時間,或日期時間值,否則返回0。

EDIT更新然後改變你的列試試這個:

--table name: xyz 
--column name: CreatedOn varchar(10) to datetime 

UPDATE xyz 
    SET CreatedOn ='1990/01/01' 
    WHERE ISDATE(CreatedOn)!=1 
GO 
ALTER TABLE xyz Alter Column CreatedOn DateTime 
GO 
+0

ISDATE(CreatedOn)= 0作品,謝謝 –

相關問題