2010年6月23日 星期三

超出範圍的 datetime 值

在MS-SQL發生:char 資料型別轉換成 datetime 資料型別時,產生超出範圍的 datetime 值。
苦思到底怎回事,也google了;都是明確的問題可發現,但我這題真的是我眼睛太疲勞嗎?
資料結構:
s_day datetime -->2010/6/14
s_time varchar(5) -->07:43

在使用select s_day+' '+s_time>= or s_day+' '+s_time<= 時,卻報:
char 資料型別轉換成 datetime 資料型別時,產生超出範圍的 datetime 值。
但是我又 print isdate(s_day+' '+s_time) 又都是 1 (true)
怪事耶...是閏?
------
要用這樣嗎?
CONVERT(DATETIME, '2010-06-23 00:00:00', 102)
待測
2010/6/24 測試結果:沒用
------
最終解決方式:
1.採用isdate來判斷是否有非日期的資料
2.將 日期 + 時間 = 非日期的值 , 自動清除 (如:時間 00:00)
如此在使用較複雜的sql時,就能省掉這樣麻煩;但主要還是要在人機這界面層加入判斷,防止問題再發生

沒有留言:

張貼留言