如何在SQL Server中找到去年相同的MTD日期范围?

时间:2017-04-10 21:15:03

标签: sql-server date date-range ms-query

我正在尝试查找去年同月的MTD数据。谁能帮我找到那个日期范围?

如果我今天要提取数据,那么今天MTD将是4/1/2017 - 4/10/2017但是我正在寻找与去年相同的日期范围4/1/2016 - 2016年4月4日

以下是我今年提出的MTD的SQL查询,

LEFT JOIN 
   (SELECT 
        c2.ID AS CategoryID, 
        SUM(te.Price * te.Quantity) AS Sales,
        SUM(te.Cost * te.Quantity) AS Costs
    FROM   
        TransactionEntry te
    LEFT JOIN 
        Store s ON te.StoreID = s.ID
    INNER JOIN 
        [Transaction] t ON te.TransactionNumber = t.TransactionNumber 
                        AND te.StoreID = t.StoreID 
    LEFT JOIN 
        Item i ON te.ItemID = i.ID 
    LEFT JOIN 
        Category c2 ON i.CategoryID = c2.ID 
    WHERE  
        te.StoreID NOT IN (0, 2, 4, 17, 26) 
        AND t.Time >= DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) 
        AND t.Time < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1)
    GROUP BY 
        c2.ID) AS mtd

1 个答案:

答案 0 :(得分:0)

除非你需要更多参数化的东西,否则你可以追溯到1年:

select DATEADD(year, -1, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)), 
DATEADD(year, -1, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1))

输出2016-04-01&amp; 2016年4月11日

在查询的上下文中:

WHERE te.StoreID NOT IN (0, 2, 4, 17, 26) 
AND t.Time >= DATEADD(year, -1, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) 
AND t.Time < DATEADD(year, -1, DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1))