你能帮忙找到离当前日期最近的 2 月 1 日吗?
以下脚本仅在当年运行时才能正常工作:
select DATEADD(MONTH,1,DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0))
但是当它在明年一月运行时,它会产生错误的结果。
先感谢您!
最佳答案
您的问题可以有两种不同的解释:第一种是找到下一个最接近的 2 月 1 日(即 Feb 2 2016
将返回 Feb 1 2017
),第二种是找到与当前日期最接近的 2 月 1 日(即 Feb 2 2016
将返回 Feb 1 2016
)。
Prdp 已经为前者提供了答案,因此这种方法(我确信可以简化)将适用于后者。
这将考虑当年的 2 月 1 日和下一年的 2 月 1 日,并计算两者的 DateDiff()
天数,并选择最接近的一个。
;With Dates As
(
Select ThisFeb = DateFromParts(Year(GetDate()), 2, 1),
NextFeb = DateFromParts(Year(GetDate()) + 1, 2, 1)
), Distance (Date, Distance) As
(
Select ThisFeb, Abs(DateDiff(Day, GetDate(), ThisFeb)) As ThisFebDiff
From Dates
Union All
Select NextFeb, Abs(DateDiff(Day, GetDate(), NextFeb)) As NextFebDiff
From Dates
)
Select Top 1 Date
From Distance
Order By Distance Asc
关于SQL Server 最近的 2 月 1 日,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44850470/