SQL 查询以查找 6 个月时间中该月的最后一天
SQL Query to find the last day of the month in 6 months time
我正在尝试写一些 SQL,它将在 6 个月的时间内给出该月的最后一天。
例如如果我有一个检查日期 15-07-2015 我希望下一个检查日期是 31-01-2016
检查日期可以是任何一个月的任何一天
如有任何建议,我们将不胜感激。
如果我明白了。就是这样
declare @d date = '2015-07-15'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@d)+7,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
如果您使用的是 SQL Server 2012+,您可以使用 eomonth 函数获取一个月的最后一天:
declare @d date = '2015-07-15'
select eomonth(@d,6)
结果:2016-01-31
该函数接受一个日期和一个可选的整数,该整数指定要添加到日期参数的月数。
Select DateAdd(D, Day(DateAdd(Month, 7, '2015-07-15')) * -1, DateAdd(M, 7, '2015-07-15'))
给出您期望的答案。
我正在尝试写一些 SQL,它将在 6 个月的时间内给出该月的最后一天。
例如如果我有一个检查日期 15-07-2015 我希望下一个检查日期是 31-01-2016
检查日期可以是任何一个月的任何一天
如有任何建议,我们将不胜感激。
如果我明白了。就是这样
declare @d date = '2015-07-15'
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@d)+7,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
如果您使用的是 SQL Server 2012+,您可以使用 eomonth 函数获取一个月的最后一天:
declare @d date = '2015-07-15'
select eomonth(@d,6)
结果:2016-01-31
该函数接受一个日期和一个可选的整数,该整数指定要添加到日期参数的月数。
Select DateAdd(D, Day(DateAdd(Month, 7, '2015-07-15')) * -1, DateAdd(M, 7, '2015-07-15'))
给出您期望的答案。