先看一下示例的SQL語句:
select ID from (select *,(select top 1 訂購日期 from 訂單 where ...) as 最近訂購 from 客戶)? where 最近訂購 between @p1 and @p2
對應的添加參數的代碼(使用Enterprise Library 3.1):
db.AddInParameter(cmd, p1, DbType.DateTime, dt1);
db.AddInParameter(cmd, p2, DbType.DateTime, dt2);
為了便于閱讀,我簡化了語句的寫法,各位請別管語法問題,我這兒要描述的問題是:使用這個SQL命令來搜索記錄,不會拋出異常,但搜索結果是不正確的!而如果把SQL中的參數p1、p2直接改為#2009-2-12 12:00:00#這種形式,結果就正確了!
換句話說,使用參數方式添加參數值搜索結果不正確;直接把時期值寫到SQL語句中,就正確了。這是怎么回事呢?
補充說明:1、不使用子查詢的話,參數化查詢是正確的;2、將DbType.DateTime改為DbType.Date,或者將dt1改為dt1.ToString()同樣不能解決。
4 回答

jeck貓
TA貢獻1909條經驗 獲得超7個贊
而如果把SQL中的參數p1、p2直接改為#2009-2-12 12:00:00#這種形式,結果就正確了!
你說的意思是不是時間的格式不是你所要的,#2009-2-12 12:00:00#格式。如果是這樣,你可以在把p1,p2格式成你要的格式在傳遞。
- 4 回答
- 0 關注
- 482 瀏覽
添加回答
舉報
0/150
提交
取消