在6小时间隔SQL中组织数据库中的数据

时间:2016-02-23 22:31:27

标签: sql sql-server

我目前正在尝试以6小时为间隔从我的数据库中获取数据。数据库信息:SQL Server 2000.我获取每小时数据的工作代码如下:

SELECT 
DATEADD(hour, DATEDIFF(hour, 0, DateData), 0),
AVG(OtherData) AS AvgData
FROM DATASITE
GROUP BY DATEADD(hour, DATEDIFF(hour, 0, DateData), 0)
ORDER BY DATEADD(hour, DATEDIFF(hour, 0, DateData), 0);

如何创建一个查询来以6小时为间隔而不是按小时间隔获取数据?

1 个答案:

答案 0 :(得分:1)

你可以使用DATEPART和整数舍入来获得6小时的桶,如下所示:

SELECT 
DATEPART(hour,DateData)/6 Bucket,
AVG(OtherData) AS AvgData
FROM DATASITE
GROUP BY DATEPART(hour,DateData)/6
ORDER BY DATEPART(hour,DateData)/6;

请记住,水桶将对应于午夜-6AM,6A-12P,12P-6P和6P-午夜,并且它们将通过上述查询表示为0,1,2和3。