我有一個數據庫,其中CREATEDATE
和CREATETIME
作爲varchars存儲在2個獨立的屬性中。我試圖將這2個合併爲一個smalldatetime
屬性。將2 varchar屬性轉換爲datetime時出錯
當我運行下面的轉換,我收到錯誤:
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
UPDATE UsersTemp
SET Created = CONVERT(datetime, CAST(CONVERT(date, CreateDateIMF, 102)AS varchar(50))
+ ' ' +
CASE WHEN LEN(CreateTime) = 6 THEN
Left(CreateTime, 2) + ':' + SUBSTRING(CreateTime, 2, 2)
ELSE
Left(CreateTime, 1) + ':' + SUBSTRING(CreateTime, 1, 2)
END
+ ':' + Right(CreateTime, 2), 120)
(是的,這是凌亂的SQL,但是這只是暫時的辦法,我可以用它來得到這個數據它更好)
我已經嘗試了一些不同的事情,當整個集合工作,我似乎無法得到它的工作。
當在SELECT
中嘗試上述參數時,日期工作正常,所以問題存在於時間字段中,但我不確定如何更正它。
示例原始數據:
CREATEDATEIMF
20120220
20040415
20040415
20040415
20040415
20040415
20040415
20040415
20040415
20050510
CREATETIME
160401
142304
142304
142304
142304
142304
142304
142304
142304
44427
我已確認的時間是HMMSS。 (注意短時間內沒有前導0)
這個數據是從舊的COBOL程序轉儲的。
你確定它不只是SMALLDATETIME不支持秒? (請參閱http://msdn.microsoft.com/en-gb/library/ms182418.aspx) – chrisb 2013-02-20 19:20:28
@chrisb不,秒數被截斷,它們不阻止轉換。 – 2013-02-20 19:23:13