[英]Get last date of the previous month Transact-SQL
我正在嘗試獲取前一個月的數據,但最后一天的數據未獲取。
輸出:上個月是4月,這種情況僅檢索到4月29日的數據。 4月30日的數據丟失。
可以請別人幫我糾正這個問題。
OLH.DateStamp > CONVERT(VARCHAR,DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0),101)
And
OLH.DateStamp < CONVERT(VARCHAR,DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1),101))
提前致謝
獲取上個月數據的最簡單方法是:
DATEDIFF(month, OLH.DateStamp, GETDATE()) = 1
但是,這不使用索引。 因此,更好的方法是:
OLH.DateStamp >= DATEADD(MONTH, -1, DATEADD(DAY, 1 - DAY(GETDATE()), CAST(GETDATE() as DATE))) AND
OLH.DateStamp < DATEADD(DAY, 1 - DAY(GETDATE()), CAST(GETDATE() as DATE))
表達方式:
DATEADD(DAY, 1 - DAY(GETDATE), CAST(GETDATE() as DATE))
返回當月第一天的午夜。
您應該嘗試每月的最后一天應<= OLH.Datestamp
要獲得所需的輸出,您正在尋找:
--Use It In Where Clause
DECLARE @FirstDayOfLastMonth
DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, -1, GETDATE() -
2)) ), DATEADD(m, -1, GETDATE() - 1)))
,@LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE()) ), GETDATE()))
OLH.DateStamp >= CONVERT(VARCHAR, @FirstDayOfLastMonth , 101) AND
OLH.DateStamp <= CONVERT(VARCHAR, @LastDayOfLastMonth , 101)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.