按半小时间隔计算通话次数

5

我试图获取每半小时间隔的通话次数,但无法弄清楚。

select 
       count(call_id) as '#Calls',
       1/2 h(date_time) as 'Call_Interval'
from My_Table

enter image description here

1个回答

7

按不同的时间间隔进行聚合的一种方法是使用 DATEADDDATEDIFF

SELECT 
       COUNT(*) as '#Calls',
       DATEADD(minute, (DATEDIFF(minute, '', date_time) / 30) * 30, '') as Call_Interval
FROM dbo.My_Table
GROUP BY DATEADD(minute, (DATEDIFF(minute, '', date_time) / 30) * 30, '')
ORDER BY Call_Interval;

顺便提一下,上面的空字符串常量表示datetime的默认值。 datetime和其他时间类型的默认值如下所示,以ISO 8601字符串格式表示:

数据类型 默认值
date 1900-01-01
datetime 1900-01-01T00:00:00
datetime2 1900-01-01T00:00:00
datetimeoffset 1900-01-01T00:00:00+00:00
smalldatetime 1900-01-01T00:00:00
time 00:00:00

使用比minute更精细的日期部分(例如secondmillisecondmicrosecond)进行时间间隔计算可能需要比默认值(例如2020-01-01T00:00:00)更新的基础日期时间值,以避免溢出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接