2017-05-05 109 views
1
WHERE(DATEDIFF(MONTH, datecreated, GETDATE()) = +1) 

這應該怎麼辦?有人可以解釋這個SQL代碼嗎?

+0

如果在幾個月中的過期差異= 1 –

+0

+1解析爲1,所以它表示WHERE(表達式)= 1.展開式:where(datecreated month - current month)= 1,則爲true,否則爲false。 – flaZer

+0

這個表達式不是可玩的。它不能在'datecreated'上使用索引查找。 –

回答

2

這是獲取在上個日曆月的一切。請注意,無論當前日期如何,這都是特定於上一個日曆月。

爲什麼會出現這種情況? datediff()計算兩個日期/時間值之間的邊界的數量。在這種情況下,邊界是一個月的開始/結束。所以,如果今天是2017-05-05,那麼2017-04年的任何事物都有一個單一的邊界。三月沒有任何事情,五月沒有任何事情。請注意,5月1日至5月31日的情況也是如此。

儘管這很方便,但我認爲代碼至少應該有一條評論,因爲對於一個偶然的讀者來說,這可能並不明顯。

+0

非常感謝。 –

相關問題