按自定义期间列出的SQL SERVER组日期时间戳
我有过去3年中每60分钟的间隔数据(按自定义期间列出的SQL SERVER组日期时间戳,sql,sql-server,datetime,group-by,Sql,Sql Server,Datetime,Group By,我有过去3年中每60分钟的间隔数据(Value)。时间戳的数据类型是datetimeoffset(7)。每个间隔的时间戳表示时间段的结束 例如,时间戳2016-12-31 07:00:00.0000000+01:00处的值323.459是从2016-12-31 06:00:00.0000000+01:00到2016-12-31 07:00:00.0000000+01:00的期间。以下是更多示例数据: DateTime Value 2016-
Value
)。时间戳的数据类型是datetimeoffset(7)
。每个间隔的时间戳表示时间段的结束
例如,时间戳2016-12-31 07:00:00.0000000+01:00
处的值323.459
是从2016-12-31 06:00:00.0000000+01:00
到2016-12-31 07:00:00.0000000+01:00
的期间。以下是更多示例数据:
DateTime Value
2016-12-31 06:00:00.0000000 +01:00 314.5300000000
2016-12-31 07:00:00.0000000 +01:00 323.4590000000
2016-12-31 08:00:00.0000000 +01:00 314.3110000000
2016-12-31 09:00:00.0000000 +01:00 611.7280000000
2016-12-31 10:00:00.0000000 +01:00 507.1300000000
2016-12-31 11:00:00.0000000 +01:00 533.3160000000
2016-12-31 12:00:00.0000000 +01:00 524.4510000000
2016-12-31 13:00:00.0000000 +01:00 507.0540000000
2016-12-31 14:00:00.0000000 +01:00 498.2340000000
2016-12-31 15:00:00.0000000 +01:00 507.0230000000
2016-12-31 16:00:00.0000000 +01:00 498.1710000000
2016-12-31 17:00:00.0000000 +01:00 506.9680000000
2016-12-31 18:00:00.0000000 +01:00 506.9730000000
2016-12-31 19:00:00.0000000 +01:00 507.0090000000
2016-12-31 20:00:00.0000000 +01:00 498.2780000000
2016-12-31 21:00:00.0000000 +01:00 463.2640000000
2016-12-31 22:00:00.0000000 +01:00 507.0490000000
2016-12-31 23:00:00.0000000 +01:00 454.7290000000
2017-01-01 00:00:00.0000000 +01:00 419.7010000000
2017-01-01 01:00:00.0000000 +01:00 628.9020000000
2017-01-01 02:00:00.0000000 +01:00 541.9210000000
2017-01-01 03:00:00.0000000 +01:00 533.1670000000
2017-01-01 04:00:00.0000000 +01:00 515.5930000000
2017-01-01 05:00:00.0000000 +01:00 454.7160000000
2017-01-01 06:00:00.0000000 +01:00 445.8340000000
我想知道每个月的总数。因此2017年1月期间将使用以下日期:2017-01-01 06:00:00.0000000+01:00
to2017-02-01 06:00:00.0000000+01:00
2017年2月以这些日期为界:2017-02-01 06:00:00.0000000+01:00
to2017-03-01 06:00:00.0000000+01:00
这些都是例子。我想知道我的数据集中所有月份的总数。如何编写查询以获得按月份分组的
值
列的总计?只需减去6小时,然后进行计算:
SELECT YEAR(dts_start) AS [Year],
MONTH(dts_start) AS [Month],
SUM([Value]) AS [Total]
FROM data CROSS APPLY
(VALUES (DATEADD(hour, -6, datetimestamp)) as v(dts_start)
GROUP BY YEAR(dts_start), MONTH(dts_start)
ORDER BY [Year], [Month];
它怎么不起作用?这样的评论没有多大帮助。嗨,戈登,对不起,你是对的,提取7个小时就可以了。你的第一个回答是减去18小时,这不起作用。我有没有说过你很棒?:-)非常感谢。嗨@GordonLinoff,回答得很好!你能查一下我的问题吗。我真的需要你的帮助。