2011-09-27 44 views
1

在SQL Server中,我有一個表上的開始時間列如:SQL服務器:小時和分鐘平均

2011-09-18 08:06:36.000 
2011-09-19 05:42:16.000 
2011-09-20 08:02:26.000 
2011-09-21 08:37:24.000 
2011-09-22 08:22:20.000 
2011-09-23 11:58:27.000 
2011-09-24 09:00:48.000 
2011-09-25 06:51:34.000 
2011-09-26 06:09:05.000 
2011-09-27 08:25:26.000 
... 

我的問題是,我怎麼能得到平均小時和分鐘?我想知道這份工作的平均起步時間是多少。 (例如07:22)

我想是這樣的,但沒有奏效:

select CAST(AVG(CAST(DATEPART(HH, START_TIME)AS float)) AS datetime) FROM 

感謝。

+3

什麼版本的SQL Server? –

回答

1
declare @T table(StartTime datetime) 

insert into @T values 
('2011-09-18 08:06:36.000'), 
('2011-09-19 05:42:16.000'), 
('2011-09-20 08:02:26.000'), 
('2011-09-21 08:37:24.000'), 
('2011-09-22 08:22:20.000'), 
('2011-09-23 11:58:27.000'), 
('2011-09-24 09:00:48.000'), 
('2011-09-25 06:51:34.000'), 
('2011-09-26 06:09:05.000'), 
('2011-09-27 08:25:26.000') 

;with C(Sec) as 
(
    select dateadd(second, avg(datediff(second, dateadd(day, datediff(day, 0, StartTime), 0), StartTime)), 0) 
    from @T 
) 
select convert(char(5), dateadd(minute, case when datepart(second, C.Sec) >= 30 then 1 else 0 end, C.Sec), 108) 
from C 
----- 
08:08 
+0

感謝它真的有效... – Mehmet

0

試試這個:

select CAST((SUM(DATEPART(HH, START_TIME) * 60 + DATEPART(MI, START_TIME))/COUNT(*))/60 AS VARCHAR(10)) + ':' + CAST((SUM(DATEPART(HH, START_TIME) * 60 + DATEPART(MI, START_TIME))/COUNT(*))%60 AS VARCHAR(10)) 
FROM..... 
+0

這個和以上的解決方案給了1分鐘的差異。但這不是問題。這也適用。謝謝... – Mehmet