先得&;sql中datetime格式的未来12个月的最后日期
我正在尝试获取从运行报告/查询之日起的未来12个月的第一个日期和最后一个日期。我可以使用以下查询获取未来12个月的日期,但无法获取第一个和最后一个日期。任何关于如何做到这一点的建议都将不胜感激先得&;sql中datetime格式的未来12个月的最后日期,sql,sql-server,calendar,Sql,Sql Server,Calendar,我正在尝试获取从运行报告/查询之日起的未来12个月的第一个日期和最后一个日期。我可以使用以下查询获取未来12个月的日期,但无法获取第一个和最后一个日期。任何关于如何做到这一点的建议都将不胜感激 SELECT STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/' + STR(YEAR(DATEADD(mm,Number,GETDATE())),4),DATEPART(MM,'january '+'01 1900') FROM Master.
SELECT STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/'
+ STR(YEAR(DATEADD(mm,Number,GETDATE())),4),DATEPART(MM,'january '+'01 1900')
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11
但结果是:
但我所期望的是:
假设支持
EOMONTH
功能,请使用
SELECT dateadd(day,1,dateadd(month,number-1,EOMONTH(getdate()))) as mth_start,
dateadd(month,number,EOMONTH(getdate())) as mth_end
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11
请尝试此查询
SELECT
CONVERT(datetime, STR(MONTH(DATEADD(mm,Number,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number,GETDATE())),4)) firstdate,
dateadd(day,-1,CONVERT(datetime, STR(MONTH(DATEADD(mm,Number+1,GETDATE())),2)+'/01/'+ STR(YEAR(DATEADD(mm,Number+1,GETDATE())),4))) lastdate
FROM Master.dbo.spt_values
WHERE NAME IS NULL
AND Number BETWEEN 0 AND 11
要获取当月的最后一个日期,我们可以从下个月的第一个日期中删除一天。可能重复@TabAlleman。。链接的问题是为博士后准备的。这太完美了。谢谢你的帮助。