我有毫秒数据,我想将它分组为1分钟,我该怎么做?
示例时间戳:20150831000700000
2015年08月31日时间戳:HHMMSSZZZ,其中ZZZ为毫秒。
如何在1分钟内对这些数据进行分组?
答案 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)
但是,如果您不将数据限制为某一天/小时,则可能会收到意外结果。你想要实现的目标并不是很清楚