我正在写一个查询,以给我本周,本月和今年出售的产品数量(3个单独的列)到目前为止,一个月至一年的时间以及一年至今的缩放含义今天例如它会显示从星期一开始销售的产品,因为从本月的第一天开始,从今年的第一天开始,随着时间的推移这将继续每一周,每月和每一年,还有其他三个专栏去年同样的逻辑。我需要的是帮助,让使用DATEADD DATEDIFF或(例如(DATEADD(分钟,-15,日期查询GETDATE()))。SQL获得每月和每周数据
非常感谢你,也是我正在使用SQL Server 2008中
我正在写一个查询,以给我本周,本月和今年出售的产品数量(3个单独的列)到目前为止,一个月至一年的时间以及一年至今的缩放含义今天例如它会显示从星期一开始销售的产品,因为从本月的第一天开始,从今年的第一天开始,随着时间的推移这将继续每一周,每月和每一年,还有其他三个专栏去年同样的逻辑。我需要的是帮助,让使用DATEADD DATEDIFF或(例如(DATEADD(分钟,-15,日期查询GETDATE()))。SQL获得每月和每周数据
非常感谢你,也是我正在使用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 Fiddle。
祝你好运。
使用DATEADD函数
在某些情况下,你可能想的时间间隔添加到datetime或smalldatetime值或减去的时间间隔。例如,您可能需要添加或从中减去一个月您可以使用DATEADD函数来执行此计算,该函数采用以下语法:
DATEADD(日期/ time_part,数字,日期)
实施例:
SELECT OrderDate, DATEADD(mm, 3, OrderDate) AS NewDate
FROM Sales.Orders
WHERE OrderID = 1001
使用DATEDIFF函数
的DATEDIFF函数计算两个日期之间的时间间隔返回一个表示间隔的整数。该函数的语法如下:
DATEDIFF(日期/ time_part,日期,结束日期)
实施例:
SELECT OrderDate, DelivDate,
DATEDIFF(hh, OrderDate, DelivDate) AS HoursDiff
FROM Sales.Orders
WHERE OrderID = 1002
尝试此页:http://sqlserverpedia.com/wiki/Built-in_Functions_-_Date_and_Time_Functions – PowerUser