2012-08-04 54 views
0

我在我的sql表中有一个名为“total_hours_worked”的列,它是“datetime”数据类型 我想知道“在sql server中工作的总小时数”的总和。sql 05中的datetime列的总和

如何做到这一点? 我GOOGLE了,但没有得到一个实际的解决方案。

+0

@praveen不,我不能这样做,因为SUM函数适用于整数values.if我尝试做你告诉我会得到这样 错误“操作数的数据类型的日期时间是和运营商无效。” – mathewtinus 2012-08-04 05:12:36

+0

@SimonWhitehead不工作的朋友.. sum是整数。我想总 – mathewtinus 2012-08-04 05:14:09

+0

需要两个字段或两个值,找到他们之间的不同的时间,那么之后你可以找到他们的总和只有... – sanghavi7 2012-08-04 05:24:19

回答

1

如果我正确理解您的数据,就是这样的。

declare @T table 
(
    total_hours_worked datetime 
) 

insert into @T values ('05:30:00') 
insert into @T values ('10:00:00') 
insert into @T values ('15:00:00') 

select sum(datediff(minute, 0, total_hours_worked))/60.0 as hours_worked 
from @T 

结果:

hours_worked 
--------------------------------------- 
30.500000 

如果你只需要存储的时间,你应该考虑的一个整数数据类型,而不是datetime。这将更有效,更容易处理。

1

试试这个。在这里我也考虑过秒。

declare @T table 
(
    total_hours_worked datetime 
) 

insert into @T values ('05:30:00') 
insert into @T values ('10:00:00') 
insert into @T values ('15:00:00') 
insert into @T values ('05:25:45') 

select SUM((DATEPART(hh,total_hours_worked)*60)+DATEPART(mi,total_hours_worked)+(DATEPART(ss,total_hours_worked)/(60.0)))/60.0 as TotalHours from @T 
+0

现在检查查询,我已经更新与SQL 2005一起工作。最初你没有提到SQL版本,所以我在SQL 2008中做了它。 – AnandPhadke 2012-08-04 08:00:14

+0

感谢它没有给我的解决方案,但我从这个提示... – mathewtinus 2012-08-04 17:39:46