簡體   English   中英

我如何獲得過去 12 個月的 sql

[英]How do i get the last 12 months in sql

我有每個月運行的存儲過程,我總是想運行 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' 

請幫忙。 謝謝

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
    declare @Date datetime = getdate();

WITH T AS(
SELECT 
    DATEADD(month, DATEDIFF(month, 0, @Date), 0) AS Start,
    DATEADD(d, -DAY(DATEADD(m,1,@date)),DATEADD(m,1,@date)) AS EndDate,
    12 Cnt
UNION ALL
SELECT 
    DATEADD(month, -1, Start),
    DATEADD(d, -DAY(DATEADD(m,1,Start-1)),DATEADD(m,1,Start-1)),
    Cnt-1
FROM
    T
WHERE
    Cnt-1>0
)
SELECT 
    Start, EndDate
FROM T

最近 12 個月的 SQL 函數

在上一個示例的基礎上,這給出了上個月底和 12 個月的數據:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM