我在查詢中遇到這樣的:DATEDIFF(DD ...返回月份數據
[date_start] >= DATEADD(dd, -DAY(GETDATE()) + 1, DATEDIFF(dd, 0, GETDATE()))
我明白,這是部分去除該領域的時間因素,但有人可以解釋我如何在不使用「月」功能的情況下返回當前月份數據?
我在查詢中遇到這樣的:DATEDIFF(DD ...返回月份數據
[date_start] >= DATEADD(dd, -DAY(GETDATE()) + 1, DATEDIFF(dd, 0, GETDATE()))
我明白,這是部分去除該領域的時間因素,但有人可以解釋我如何在不使用「月」功能的情況下返回當前月份數據?
需要當月的當前日期(日(GetDate())+ 1)並從自日起的整個天數中減去它0.
[Date_start] >=
DATEADD(dd, --Add Integer X to DateTime Y
-DAY(GETDATE()) + 1, --X = - Current Day of Month + 1
DATEDIFF(dd, 0, GETDATE()) --Y = The number of days between day 0 and now.
--(in whole days to round out the 'time' part of the datetime)
沒有標準功能來實現這一點。
此致不大於我見過的其它方法少得多的直觀的,雖然在迄今使用負數添加()是混亂的,因爲是在datediff()
的結果的依賴被隱式地從int
到datetime
轉換。
有一個在參數密切關注。當你從current_date減去當前日期時,你會得到上個月的最後一天:'2017-7-17 - 17 = 2017-06-31'。並且這減去一個:'2017-07-17 - (17-1)= 2017-07-01' – dnoeth
該公式旨在獲取當前月份的第一個日期...扣除當前日期並添加1天以開始月 – maSTAShuFu