如何返回本月的最后一个和下一个25号

时间:2019-06-10 14:07:46

标签: sql-server date

在SQL Server 2014中,我需要同时返回当月前25号的最后一个实例和今天后25号的下一个实例。

我还没有SQL的能力,所以我还没有准备好代码

例如

  • 如果今天是6月28日,我需要返回6月25日和7月25日
  • 如果今天是6月15日,我需要返回5月25日和6月25日

在任何情况下都不会在每个月25日提出要求,因此不需要在那里进行验证。

1 个答案:

答案 0 :(得分:4)

一个使用DATEFROMPARTS的想法(假设您使用的是2012+,但是2008年还剩下4周的支持,那么“ 安全”假设是否成立?)

SELECT DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25),
       DATEADD(MONTH,1,DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25))
FROM (VALUES(DATEADD(DAY, -25,GETDATE()))) V(Today);

今天,它返回2019-05-252019-06-25并返回示例的正确值:即:

SELECT DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25),
       DATEADD(MONTH,1,DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25))
FROM (VALUES(DATEADD(DAY, -25,'20190628'))) V(Today);