全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1318
推到 Plurk!
推到 Facebook!

sql問題

尚未結案
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-27 09:49:26 IP:211.148.xxx.xxx 未訂閱
update tempatd set factgo=( select max(atd15010.recdatetime) from atd15010 where tempatd.cardno=atd15010.cardno and atd15010.readok=0 and atd15010.recdatetime is not null and tempatd.factgo is null and atd15010.recdatetime between tempatd.mustgo- 1.001/24*@readarea and tempatd.mustgo 1.001/24*@readarea ) where itemtime=1 and workno>=@sworkno and workno<=@eworkno 我在storeprocedure中執行此語句會出現 Syntax error converting datetime from character string. 的錯誤. recdatetime 是char型態,factgo是datetime型態 請幫忙查一下是什麼原因? 互相幫助,共同進步
------
互相幫助,共同進步
pksimo
一般會員


發表:0
回覆:1
積分:0
註冊:2003-05-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-27 14:03:26 IP:61.218.xxx.xxx 未訂閱
應該是日期條件的問題 tempatd.factgo is null 資料庫的日期應該是沒有 null 值吧 不是1899-12-30 就是 當日值 所以這樣查詢會有錯吧 你可以先測一下 select * from tempatd where factgo=-2 及 select * from tempatd where factgo<>-2 你就會明白
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-27 14:24:33 IP:211.148.xxx.xxx 未訂閱
引言: 應該是日期條件的問題 tempatd.factgo is null 資料庫的日期應該是沒有 null 值吧 不是1899-12-30 就是 當日值 所以這樣查詢會有錯吧 你可以先測一下 select * from tempatd where factgo=-2 及 select * from tempatd where factgo<>-2 你就會明白
在Sql server中日期型字段是可以為null值的,我測試的好像是在最後的between條件那里有錯誤,但我不知道是為什麼? 互相幫助,共同進步
------
互相幫助,共同進步
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-27 15:53:06 IP:61.220.xxx.xxx 未訂閱
那就這樣下好了.. 利用 convert(float, xxx) 的方式先轉型為浮點數 and convert(float, atd15010.recdatetime) between convert(float, tempatd.mustgo- 1.001/24 * @readarea) and convert(float, tempatd.mustgo 1.001/24 * @readarea)
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-27 16:09:59 IP:211.148.xxx.xxx 未訂閱
引言: 那就這樣下好了.. 利用 convert(float, xxx) 的方式先轉型為浮點數 and convert(float, atd15010.recdatetime) between convert(float, tempatd.mustgo- 1.001/24 * @readarea) and convert(float, tempatd.mustgo 1.001/24 * @readarea)
你可能搞錯了,recdatetime的資料格式是這樣的'yyyy/mm/dd hh:mm:ss' 不清楚你為什麼要轉成float格式,而且也不能轉成float格式的. 互相幫助,共同進步
------
互相幫助,共同進步
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-27 16:13:00 IP:211.148.xxx.xxx 未訂閱
引言:
引言: 那就這樣下好了.. 利用 convert(float, xxx) 的方式先轉型為浮點數 and convert(float, atd15010.recdatetime) between convert(float, tempatd.mustgo- 1.001/24 * @readarea) and convert(float, tempatd.mustgo 1.001/24 * @readarea)
你可能搞錯了,recdatetime的資料格式是這樣的'yyyy/mm/dd hh:mm:ss' 不清楚你為什麼要轉成float格式,而且也不能轉成float格式的. 互相幫助,共同進步
我現在把factgo變成字符型態就可以了.但我還是想知道為會麼用datetime型態就會有錯誤呢? 互相幫助,共同進步
------
互相幫助,共同進步
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-27 18:35:05 IP:61.220.xxx.xxx 未訂閱
引言: 你可能搞錯了,recdatetime的資料格式是這樣的'yyyy/mm/dd hh:mm:ss' 不清楚你為什麼要轉成float格式,而且也不能轉成float格式的.
你的第一篇不是寫 recdatetime 是char型態,factgo是datetime型態 嗎?? 記得在比對不同資料格式 (datatype) 時要先轉換即可!!
zhuna
一般會員


發表:26
回覆:39
積分:13
註冊:2003-05-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-28 07:49:52 IP:211.148.xxx.xxx 未訂閱
引言:
引言: 你可能搞錯了,recdatetime的資料格式是這樣的'yyyy/mm/dd hh:mm:ss' 不清楚你為什麼要轉成float格式,而且也不能轉成float格式的.
你的第一篇不是寫 recdatetime 是char型態,factgo是datetime型態 嗎?? 記得在比對不同資料格式 (datatype) 時要先轉換即可!!
char型態也可以是'yyyy/mm/dd hh:mm:ss'格式的,而且字符型態的日期可以直接和日期型態的日期相比較.你可以在sql的查詢分析器里試一下. 互相幫助,共同進步
------
互相幫助,共同進步
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-28 09:39:48 IP:61.220.xxx.xxx 未訂閱
引言: char型態也可以是'yyyy/mm/dd hh:mm:ss'格式的,而且字符型態的日期可以直接和日期型態的日期相比較.你可以在sql的查詢分析器里試一下.
ok. 那這樣我知道了. 不過為什麼要開成這樣的格式呢. 既然是 yyyy/mm/dd hh:mm:ss 這樣的話就開 datetime 反而所需的 datatype siez 小得多 (原 char (19) , 而 datetime 只要 (8) 就可以了! 然而你所謂的 字符型態的日期可以直接和日期型態的日期相比較不理想的, 因為由系統的隱性轉型常會發生一些不可預期的問題, 不如自行轉型來得有保障, 所以要如何比對, 就看你的需求了. 至於我為什麼要轉型為 float 的原因是因為 datetime 的個位數為 日 (day), 看你的 sql command 傳入的 @readarea 資料應為小時(hour) 吧, 所以建議你用 float 來進行處理比較理想, 但是現在你的 recdatetime 是 char 的型態的話, 就不建議你這樣做了. 應再配合 dateadd 來使用比較好, 建議修改為: and convert(datetime, atd15010.recdatetime) between dateadd(hh, -@readarea, tempatd.mustgo) and dateadd(hh, @readarea, tempatd.mustgo)
系統時間:2024-06-08 18:17:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!