好的,我認爲我對SQL很好......我必須在兩個日期時間列之間進行比較。以不同的方式比較日期時間值
有人能解釋
DateA > DateB
和
DateDiff(d,DateB,DateA) >= 1
我認爲這兩個語句功能上等同,但我想我是錯的區別...
好的,我認爲我對SQL很好......我必須在兩個日期時間列之間進行比較。以不同的方式比較日期時間值
有人能解釋
DateA > DateB
和
DateDiff(d,DateB,DateA) >= 1
我認爲這兩個語句功能上等同,但我想我是錯的區別...
DateA > DateB
檢查DateA是否大於DateB(2012年12月12日14:50:01大於2012年12月12日14:50:00)。
DateDiff(d,DateB,DateA) >= 1
檢查是否在天的差(日期部分d
作爲第一個參數)是否等於或超過1天更大。
DateA
如果是1分鐘或1秒或1毫秒後大於DateB
。您的DateDiff
正在尋找一整天的差價。
無論你是否打算,DateTime
總是包含一個時間,所以你必須考慮到這一點。如果DateA
甚至分數大於DateB
(比方說1毫秒)
DateA > DateB
將是真實的。
DateDiff(d,DateB,DateA) >= 1
如果日期之間的差異爲一天或更多,則將爲真。
DateA > DateB
如果DateA至少一毫秒比DateB大
換句話說,如果你認爲
DateDiff(d,DateB,DateA) >= 1
將評估真正將評估真今天在12:00比今天更大的在11:00與選擇一個
go如果你認爲一個日期午夜剛過比另一種更大的,有選擇走兩頭
你試戴比較差異? –
一個很大的區別是第一個是[sargable](http://en.wikipedia.org/wiki/Sargable),第二個不是。不要在where子句中使用第二個表達式。如果你需要第二個表達式的功能,你應該重寫你的第一個查詢,像這樣:'cast(DateA as date)> cast(DateB as date)。 –