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)
有一些日期又不會報錯,有一些日期又會報錯;到底是何原因?
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)
有一些日期又不會報錯,有一些日期又會報錯;到底是何原因?
如果确定是DATETIME的话这么写试试
SELECT CAST(CONVERT(VARCHAR(10),S_DAY,120)+' '+S_TIME AS DATETIME)
declare @s_time varchar(5) -->07:43SET @s_day = '2010/6/14'
SET @s_time = '07:43'select @s_day+' '+@s_time --2010-06-14 07:43:00.000
执行没报错。
实在不行就convert转一下吧!
convert(varchar(20),@s_day+' '+@s_time,120) -->yyyy/mm/dd HH:mm:ss
實際明細檔內有4筆相同日期:
1 ---> '2010/6/14' '07:43'
2 ---> '2010/6/14' '07:43'
3 ---> '2010/6/14' '07:43'
4 ---> '2010/6/14' '07:43'
在 procedure 內,我使用回全方式過濾值出來;在第一圈都會報錯,第二圈後就通過
這到底是出在哪邊的問題呢?
在 procedure 使用 declare cur cursor local for
條件:WHERE cm_bar=@cm_bar and ((t_day+' '+t_time>=@t_day+' '+@t_time and t_day+' '+t_time<=@limit_day+' '+@limit_time) or (limit_day+' '+limit_time>=@t_day+' '+@t_time and limit_day+' '+limit_time<=@limit_day+' '+@limit_time))
果然還是出現在日期+時間=組合出現問題;因筆數實在太多了
運用 isdate 找出,自動將時間錯誤的 歸零 00:00 , 解決報錯問題!!