我如何在sql中获得最近12个月

时间:2016-09-18 21:23:47

标签: sql sql-server tsql

我有每个月运行的存储过程,我总是希望运行滚动12个月。我的存储过程中有2个参数,start_date和end_date。例如,我这个月的开始日期和结束日期应该是这样的:

declare @start_date date
declare @end_date date

set @start_date = '2016-08-01'
set @end_date = '2015-09-01'
exec myStoredProc
 @DateBegin = @start_date
, @DateEnd = @end_date
, @DateType = 'DISCHARGE DATE'
, @ShowAllResultTables = 'N'

所以我的挑战是我无法自动开始和结束日期,所以我可以每月拉动12个月。我现在很难编码。

set @start_date = '2016-08-01'
    set @end_date = '2015-09-01' 

请帮忙。感谢

3 个答案:

答案 0 :(得分:1)

Declare @Date Date,@DateR1 Date,@DateR2 Date

Set @Date=GetDate()
Set @DateR2=DateAdd(DAY,-Day(@Date)+1,@Date) 
Set @DateR1=DateAdd(MONTH,-13,@DateR2)

Select @DateR1,@DateR2

返回

2015-08-01           2016-09-01

答案 1 :(得分:0)

答案 2 :(得分:0)

在前面的例子的基础上,这将在上个月末和12个月后结束:

SELECT DATEADD(DAY,-1,DATEADD(MONTH,-N,CAST(getdate() - (day(getdate()) - 1)AS date)))作为EndOfMonth
FROM(VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11) )t(N)