簡體   English   中英

獲取上個月的Transact-SQL的最后日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM