【发布时间】:2014-12-12 02:48:05
【问题描述】:
我有一个表格,可以为我提供每次操作发生的时间戳。从第一个动作开始,我想计算一个动作每 30 分钟发生多少次。 例如,假设我有 10 条记录,有时会签名: 16:29, 16:32,16:35,16:38,16:45,16:46,,16:47,16:58,16:59,17:15
我希望返回类似于:
16:00: 1
16:30: 8
17:00: 1
如何让这些项目在相应的时间段内正确分组? 我创建了一个临时表,其中包含列的 MAX 和 MIN 值之间的 30 分钟间隔,但我希望它从第一个新小时时间 (:00) 开始,并以 30 分钟的间隔从那里开始计算上面定义的记录
DECLARE @counter smalldatetime,
@startDate smalldatetime,
@endDate smalldatetime,
@interval int = 30
SET @startDate =
(SELECT MIN(date)
FROM table)
SET @endDate =
(SELECT MAX(date)
FROM table)
SET @counter = @startDate
DECLARE @returnDates TABLE (
[date] smalldatetime)
WHILE @counter <= @endDate
BEGIN
INSERT INTO @returnDates ([date])
VALUES (@counter)
SET @counter = DATEADD(n, @interval, @counter)
END
【问题讨论】: