如何获得 datediff 的平均时间?
How to get average time of datediff?
通过下面的查询,我得到了每个的 DATEDIFF
记录在 table.
如何获取所有记录的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.
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
较旧的日期时间 hack 会让你做这样的事情,但在 Sql Server 的更高版本中,很多都被弃用了。
select cast(avg(
cast(cast(endstartdt as datetime) -
cast(callstartdt as datetime)
as float)) as datetime)
from times
你可以在里面放一个 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
通过下面的查询,我得到了每个的 DATEDIFF 记录在 table.
如何获取所有记录的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.
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
较旧的日期时间 hack 会让你做这样的事情,但在 Sql Server 的更高版本中,很多都被弃用了。
select cast(avg(
cast(cast(endstartdt as datetime) -
cast(callstartdt as datetime)
as float)) as datetime)
from times
你可以在里面放一个 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