簡體   English   中英

如何獲取datediff的平均時間?

[英]How to get average time of datediff?

通過以下查詢,我將獲取表中每個記錄的DATEDIFF。

如何獲取所有記錄的datediff的AVG?

我不在乎日期,只是時間。

SELECT 
right('0' + convert(float,datediff 
                    (second, callstartdt,endstartdt)/ 60 % 60), 2) + ':' +
right('0' + convert(float,datediff 
                    (second, callstartdt,endstartdt)% 60),2)  as total_time
FROM times

http://sqlfiddle.com/#!6/f01c6/2

我有sql 2012。

您可以在其中放入一個AVG()

SELECT 
    right('0' + convert(float,AVG(datediff (second, callstartdt,endstartdt))/ 60 % 60), 2) + ':' 
  + right('0' + convert(float,AVG(datediff (second, callstartdt,endstartdt))% 60),2)  as total_time
FROM times

演示: SQL Fiddle

with avg_s as (
    select avg(datediff(ss, callstartdt, endstartdt)) as ss from times
)
select
    ss / 86400 as days,
    ss % 86400 / 3600 as hours,
    ss % 3600 / 60 as minutes,
    ss % 60 as seconds,
    concat(
        format(ss / 3600, '00:'), /* could be greater than 24 */
        format(ss % 3600 / 60, '00:'),
        format(ss % 60, '00')
    )
from avg_s

使用datetime的較早的hack可以使您執行類似的操作,但是在更高版本的Sql Server中不建議使用。

select cast(avg(
        cast(cast(endstartdt as datetime) -
        cast(callstartdt as datetime)
    as float)) as datetime)
from times

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM