SQL Server 按半小时间隔对呼叫计数

anauzrmj  于 2022-12-22  发布在  其他
关注(0)|答案(1)|浏览(130)

我试着计算每半小时的通话次数,但没算出来。

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

k75qkfdt

k75qkfdt1#

按不同时间间隔进行聚合的一种方法是使用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|一九○ ○年一月一日|
| datetime| 1900年1月1日星期一00:00:00|
| datetime2| 1900年1月1日星期一00:00:00|
| datetimeoffset| 1900年1月1日星期一00:00:00 + 00:00|
| smalldatetime| 1900年1月1日星期一00:00:00|
| time| 00点00分|
使用粒度大于minute的日期部分(即secondmillisecondmicrosecond)计算时间间隔时,可能需要比默认值(例如2020-01-01T00:00:00)更新的基本日期时间值,以避免溢出。

相关问题