你能帮忙找到离当前日期最近的 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/

10-11 10:35