我正在写一个查询,以提供本周、本月和今年(3 个单独的列)在一周至今、本月至今和年初至今的规模上售出的产品数量,例如今天它将显示自星期一以来售出的产品,从每月的第一天和第一年开始,随着时间的推移,这将在接下来的每个星期、月份和年份继续,去年还有 3 个具有相同逻辑的其他列。我需要的是帮助使用 DATEADD 或 DATEDIFF 获取日期查询(例如(DATEADD(分钟,-15,GETDATE()))。
非常感谢,我也在使用 SQL Server 2008
我正在写一个查询,以提供本周、本月和今年(3 个单独的列)在一周至今、本月至今和年初至今的规模上售出的产品数量,例如今天它将显示自星期一以来售出的产品,从每月的第一天和第一年开始,随着时间的推移,这将在接下来的每个星期、月份和年份继续,去年还有 3 个具有相同逻辑的其他列。我需要的是帮助使用 DATEADD 或 DATEDIFF 获取日期查询(例如(DATEADD(分钟,-15,GETDATE()))。
非常感谢,我也在使用 SQL Server 2008
这是一些未经测试的代码,可能会被优化,但应该让你朝着正确的方向前进。这使用PIVOT
操作将您的行转换为列。
SELECT WeekCount, MonthCount, YearCount
FROM
(
SELECT ProductId,
CASE
WHEN ProductSoldDate >= DATEADD(dd, 1 - DATEPART(dw, GETDATE()), GETDATE())
THEN 'WeekCount'
WHEN ProductSoldDate >= DATEADD(mm, DATEDIFF(mm,0,GETDATE()), 0)
THEN 'MonthCount'
WHEN ProductSoldDate >= DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0)
THEN 'YearCount'
END as lbl
FROM Products
) ProductSales
PIVOT
(
COUNT(ProductId)
FOR lbl IN ([WeekCount], [MonthCount], [YearCount])
) t
这是SQL 小提琴。
祝你好运。
使用 DATEADD 函数
在某些情况下,您可能希望将时间间隔添加到 DATETIME 或 SMALLDATETIME 值或减去时间间隔。例如,您可能需要从特定日期添加或减去一个月。您可以使用 DATEADD 函数来执行此计算。该函数采用以下语法:
DATEADD(日期/时间部分,数字,日期)
例子:
SELECT OrderDate, DATEADD(mm, 3, OrderDate) AS NewDate
FROM Sales.Orders
WHERE OrderID = 1001
使用 DATEDIFF 函数
DATEDIFF 函数计算两个日期之间的时间间隔,并返回一个表示该间隔的整数。该函数采用以下语法:
DATEDIFF(日期/时间部分,开始日期,结束日期)
例子:
SELECT OrderDate, DelivDate,
DATEDIFF(hh, OrderDate, DelivDate) AS HoursDiff
FROM Sales.Orders
WHERE OrderID = 1002