SQL Server 2000 - 将查询分解为15分钟块

Gor*_*yII 3 sql sql-server sql-server-2000

我有一个连续的时间数据集,我想用sql将其分解为15分钟的块.

我不想创建一个新表,以便能够帮助它.


时间,计数
9点15分,1
09:30,3
9时45分,0
10:00,2
10:15,3
.....

有谁知道我怎么能做到这一点.我认为使用类似于以下的选择:


SELECT [对"MyDate"的某种数据操作]
,COUNT(ID)
FROM MyTable
GROUP BY [对"MyDate"的某种数据操作]

Rya*_*che 5

仔细使用dateadd和datediff,就可以实现.我的解决方案将时间缩短了.

第一部分计算行的日期和纪元(0)之间的分钟数,并在其上执行mod 15,给出行的日期和最近的15分钟间隔之间的差异:

select -1 * datediff(minute, 0, mydate) % 15
from mytable
Run Code Online (Sandbox Code Playgroud)

接下来,我们只需要处理分钟,所以我们使用了从SQL Server Magazine 2007年2月(Itzik Ben-Gan的日期时间计算)中学到的日期部分剥离技术:

select dateadd(minute, datediff(minute, 0, mydate), 0)
from mytable
Run Code Online (Sandbox Code Playgroud)

然后,我们将差异添加到行的日期列和组和计数瞧!

select dateadd(minute, -1 * datediff(minute, 0, mydate) % 15, dateadd(minute, datediff(minute, 0, mydate), 0)), count(ID)
from mytable
group by dateadd(minute, -1 * datediff(minute, 0, mydate) % 15, dateadd(minute, datediff(minute, 0, mydate), 0))
Run Code Online (Sandbox Code Playgroud)