請問Sql server之Sql語法 |
尚未結案
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
shing.net
中階會員 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 請問為何在Sql server中寫一 select * from table1 where (RSK_DATE BETWEEN :DATE1 and :DATE2) 其中RSK_DATE 為日期格式 其會出現 The conversion from datetime data type to smalldatetime data type resulted in a smalldatetime overflow error 請問為何? 謝謝Hi, sql 的查詢方式是根據 user 下的條件式來轉換的, 舉個例子來看. create table #tmp ( pdno int not null, pdname varchar(10) ) insert into #tmp select 1, 'aa' insert into #tmp select 2, '20' select * from #tmp where pdname=20會發生 Server: Msg 245, Level 16, State 1, Line 1 將 varchar 數值 'aa' 轉換成資料型別為 int 的資料行語法錯誤。 的錯誤. 所以你之所以會發生這樣的現象, 應該是 RSK_DATE 是 datetime 的格式, 而 :DATE1 及 :DATE2 為 smalldatetime 的關係. 然而 smalldatetime 的範圍在: Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute. 所以只要你原來的 RSK_DATE 欄位中有值是在這個範圍外的, 都會發 生這樣的現象. 你可以修正一下你的 Query 為 select * from table1 where (RSK_DATE BETWEEN convert(datetime,:DATE1) and convert(datetime,:DATE2)) 先強迫進去的條件資料為 datetime 即可. 另外一個可能發生的原因是你的 locale 設定的問題. 試著 check 一下 server 的 日期格式和 client 端的日期格式是否是一樣的, 若不一樣, 例如 db 為 西元曆, client 為民國年, 就將 client 端的日期格式也改為西曆試試看!! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |