我试着计算每半小时的通话次数,但没算出来。
select count(call_id) as '#Calls', 1/2 h(date_time) as 'Call_Interval' from My_Table
k75qkfdt1#
按不同时间间隔进行聚合的一种方法是使用DATEADD和DATEDIFF:
DATEADD
DATEDIFF
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的日期部分(即second、millisecond和microsecond)计算时间间隔时,可能需要比默认值(例如2020-01-01T00:00:00)更新的基本日期时间值,以避免溢出。
datetime
minute
second
millisecond
microsecond
2020-01-01T00:00:00
1条答案
按热度按时间k75qkfdt1#
按不同时间间隔进行聚合的一种方法是使用
DATEADD
和DATEDIFF
:另外,上面的空字符串常量表示
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
的日期部分(即second
、millisecond
和microsecond
)计算时间间隔时,可能需要比默认值(例如2020-01-01T00:00:00
)更新的基本日期时间值,以避免溢出。