我在我的sql表中有一个名为“total_hours_worked”的列,它是“datetime”数据类型 我想知道“在sql server中工作的总小时数”的总和。sql 05中的datetime列的总和
如何做到这一点? 我GOOGLE了,但没有得到一个实际的解决方案。
我在我的sql表中有一个名为“total_hours_worked”的列,它是“datetime”数据类型 我想知道“在sql server中工作的总小时数”的总和。sql 05中的datetime列的总和
如何做到这一点? 我GOOGLE了,但没有得到一个实际的解决方案。
如果我正确理解您的数据,就是这样的。
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
。这将更有效,更容易处理。
试试这个。在这里我也考虑过秒。
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
现在检查查询,我已经更新与SQL 2005一起工作。最初你没有提到SQL版本,所以我在SQL 2008中做了它。 – AnandPhadke 2012-08-04 08:00:14
感谢它没有给我的解决方案,但我从这个提示... – mathewtinus 2012-08-04 17:39:46
@praveen不,我不能这样做,因为SUM函数适用于整数values.if我尝试做你告诉我会得到这样 错误“操作数的数据类型的日期时间是和运营商无效。” – mathewtinus 2012-08-04 05:12:36
@SimonWhitehead不工作的朋友.. sum是整数。我想总 – mathewtinus 2012-08-04 05:14:09
需要两个字段或两个值,找到他们之间的不同的时间,那么之后你可以找到他们的总和只有... – sanghavi7 2012-08-04 05:24:19