線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2210
推到 Plurk!
推到 Facebook!

請問Sql server之Sql語法

尚未結案
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-02 11:42:34 IP:211.74.xxx.xxx 未訂閱
請問為何在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 請問為何? 謝謝
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-02 12:19:03 IP:61.221.xxx.xxx 未訂閱
shing.net你好: 他說在轉換datetime 型態到smalldatetime 型態有溢位的情形發生 這可能是RSK_DATE 的資料型態與:DATE1 或:DATE2 的型態不同
------
======================
昏睡~
不昏睡~
不由昏睡~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-02 12:19:50 IP:61.219.xxx.xxx 未訂閱
datetime與smalldatetime datatype 精度不同. RSK_DATE datatype -> 應該是 smalldatetime. 檢查一下 :DATE1 與 :DATE2 datatype 是否為 smalldatetime ?    
shing.net
中階會員


發表:207
回覆:124
積分:66
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-02 12:35:13 IP:211.74.xxx.xxx 未訂閱
因為我是用delphi 之型態 其如何從delphi去修正 難道一定要修改Sql Server資料型態 謝謝
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-02 13:36:03 IP:61.221.xxx.xxx 未訂閱
shing.net你好: 可以先說明RSK_DATE 顯示何種資料 如:1999/01/01 及 :DATE1 顯示何種資料 如:1999/01/01 12:00:00
------
======================
昏睡~
不昏睡~
不由昏睡~
timhuang
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-02 15:16:26 IP:211.76.xxx.xxx 未訂閱
引言: 請問為何在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 端的日期格式也改為西曆試試看!!
系統時間:2024-07-03 17:40:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!