我在我們現有的一個存儲過程中找到了以下查詢。此查詢用於在兩個日期時間值之間進行記錄。在SQL Server中的兩個日期時間之間獲取記錄
SELECT office
FROM officebudget
WHERE officeid = @officeid
AND (
(CONVERT(DATE, DateFrom) BETWEEN @wkstdate AND @wkenddate)
OR (CONVERT(DATE, DateTo) BETWEEN @wkstdate AND @wkenddate));
我有如下改寫它,
SELECT office
FROM officebudget
WHERE officeid = @officeid
AND (
(
bkto.DateFrom >= @wkstdate
AND bkto.DateFrom <= @wkenddate
)
OR (bkto.DateTo >= @wkstdate
AND bkto.DateTo <= @wkenddate)
);
我得到了這兩種情況下相同的結果。但我需要知道在上述兩個查詢都會產生 不同結果的任何場景中?
(PS:DateFrom,DateTo,@Wkstdate,@Wkenddate是datetime
字段)
@wkstdate!='2015-09-30' –
對不起,查詢可以產生不同的結果。這是一個硬編碼的價值。現在我編輯了問題 – bmsqldev
'DateFrom'和'DateTo'是否有非零時間分量?如果是這樣的話,那麼您會錯過第一個查詢去除時間組件的轉換(加上第一個查詢中的轉換目前已被破壞 - 當兩個查詢中的一個甚至不能完成時詢問兩個查詢是否執行相同的操作編譯) –