我正在尝试编写一些SQL,它将在6个月的时间内给出该月的最后一天。
E.g。如果我有一个检查日期15-07-2015我希望下一个检查日期是31-01-2016
检查日期可以是任何一个月的任何一天
任何建议将不胜感激。
答案 0 :(得分:5)
如果我明白的话。就是这样
declare @d date = '2015-07-15'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@d)+7,0))
答案 1 :(得分:4)
如果您使用的是SQL Server 2012+,则可以使用eomonth功能获取一个月的最后一天:
declare @d date = '2015-07-15'
select eomonth(@d,6)
结果:2016-01-31
该函数采用日期和可选整数,指定要添加到日期参数的月数。
答案 2 :(得分:0)
试试这个
declare @FindLastDay datetime
set @FindLastDay=CONVERT(varchar(10),DATEADD(M,6,'2015-07-15'),120)
SELECT CAST(DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, @FindLastDay) + 1, 0)) as DATE)
输出:
2016-01-31
答案 3 :(得分:0)
Select DateAdd(D, Day(DateAdd(Month, 7, '2015-07-15')) * -1, DateAdd(M, 7, '2015-07-15'))
得出你期望的答案。