通过仔细使用dateadd和datediff,可以完成此操作。我的解决方案缩短了时间。
第一块计算行的日期和时元(0)之间的分钟数并执行在其上的模15,使该行的日期和最近的15分钟的时间间隔之间的差:
select -1 * datediff(minute, 0, mydate) % 15
from mytable
接下来,我们需要处理的只是几分钟,所以我们用这个日期部分剥离技术,我从SQL Server杂志二月(按日期时间计算伊茨克奔甘)2007年的经验教训:
select dateadd(minute, datediff(minute, 0, mydate), 0)
from mytable
然后,我们添加与行的日期列和组的差别并计数a nd瞧!
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))