在SQL Server 2014中,我需要同时返回当月前25号的最后一个实例和今天后25号的下一个实例。
我还没有SQL的能力,所以我还没有准备好代码
例如
在任何情况下都不会在每个月25日提出要求,因此不需要在那里进行验证。
答案 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-25
和2019-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);