分组1分钟数据

时间:2016-04-16 10:16:34

标签: sql sql-server

我有毫秒数据,我想将它分组为1分钟,我该怎么做?

示例时间戳:20150831000700000

2015年08月31日时间戳:HHMMSSZZZ,其中ZZZ为毫秒。

如何在1分钟内对这些数据进行分组?

2 个答案:

答案 0 :(得分:1)

基本上,您希望将值截断为分钟。在SQL Server中执行此操作的一种方法是将值从开始时间转换为分钟,然后添加它们:

select dateadd(minute,
               datediff(minute, '2000-01-01', timestamp),
               '2000-01-01'
              )

注意:通常,使用0而不是特定日期表示。但是,这些函数采用整数参数,因此您必须注意数字溢出。我不认为这是几分钟的问题,但它是秒和毫秒的问题。无论如何,最近的“合理”日期是一种安全的预防措施(而且这些函数也适用于负值)。

此外,这假设时间戳正确存储为日期/时间数据类型。如果是字符串,则只需使用left(timestamp, 12)。如果它是数字,您可以隐式或显式转换为字符串,仍然使用left()

答案 1 :(得分:0)

使用DATEPART(n)获取分钟,因此您的分组应该是:

GROUP BY DATEPART(n, your_timestamp_column)

但是,如果您不将数据限制为某一天/小时,则可能会收到意外结果。你想要实现的目标并不是很清楚