Sql server 2008 如何在SQLServer2008中添加单个列的时间(如9:25:03+11:36:27=)

Sql server 2008 如何在SQLServer2008中添加单个列的时间(如9:25:03+11:36:27=),sql-server-2008,Sql Server 2008,我有columntime数据类型,它包含如下值 9:25:03 4:43:21 2:50:13 11:25:33 ,我应该编写什么查询来获取列中所有值的总和将时间转换为秒,然后进行总和 with YourTable(TimeCol) as ( select '9:25:03' union all select '4:43:21' union all select '2:50:13' union all select '11:25:33' ) select sum(dat

我有columntime数据类型,它包含如下值

9:25:03 
4:43:21 
2:50:13 
11:25:33

,我应该编写什么查询来获取列中所有值的总和

将时间转换为秒,然后进行总和

with YourTable(TimeCol) as
(
  select '9:25:03' union all
  select '4:43:21' union all
  select '2:50:13' union all
  select '11:25:33'
)

select sum(datediff(second, 0, TimeCol)) sumSeconds
from YourTable
结果:

sumSeconds
-----------
102250
   28:24:10
试试这个:

create table tbl123(tm time)

insert into tbl123
values('9:25:03'),('4:43:21'),('2:50:13'),('11:25:33')



;WITH CTE as(select SUM(DATEPART(hh,tm)) as hh,SUM(DATEPART(mi,tm)) as mm,SUM(DATEPART(ss,tm)) as ss from tbl123)

SELECT cast(hh+(mm+(ss/60))/60 as varchar(10))+':'+
       cast((((mm+(ss/60))%60)) as varchar(10))+':'+
       cast(ss%60 as varchar(10)) 
       from CTE
;with cte as(
select SUM(DATEPART(hh,tm))*3600+
       SUM(DATEPART(MI,tm))*60+
       SUM(DATEPART(SS,tm)) tme
from time_table)
SELECT cast(datepart(hh,cast(CONVERT(varchar(8),
       DATEADD(ss, tme  , 0), 114) as time))+
       datediff(dd,'1900-01-01',CONVERT(varchar, 
       DATEADD(ss, tme  , 0), 121))*24 as varchar(20))+
       right(CONVERT(varchar(8), DATEADD(ss, tme  , 0), 114),6)
from cte    
结果:

sumSeconds
-----------
102250
   28:24:10
试试这个:

create table tbl123(tm time)

insert into tbl123
values('9:25:03'),('4:43:21'),('2:50:13'),('11:25:33')



;WITH CTE as(select SUM(DATEPART(hh,tm)) as hh,SUM(DATEPART(mi,tm)) as mm,SUM(DATEPART(ss,tm)) as ss from tbl123)

SELECT cast(hh+(mm+(ss/60))/60 as varchar(10))+':'+
       cast((((mm+(ss/60))%60)) as varchar(10))+':'+
       cast(ss%60 as varchar(10)) 
       from CTE
;with cte as(
select SUM(DATEPART(hh,tm))*3600+
       SUM(DATEPART(MI,tm))*60+
       SUM(DATEPART(SS,tm)) tme
from time_table)
SELECT cast(datepart(hh,cast(CONVERT(varchar(8),
       DATEADD(ss, tme  , 0), 114) as time))+
       datediff(dd,'1900-01-01',CONVERT(varchar, 
       DATEADD(ss, tme  , 0), 121))*24 as varchar(20))+
       right(CONVERT(varchar(8), DATEADD(ss, tme  , 0), 114),6)
from cte    
结果

28:24:10

如何准确地定义两次的总和?实际上,我使用这个查询-select*from select e.myhours,e.accountprojectd,dbo.getweekdaynameoftate.totaltime为weekd,e.AccountEmployeeId from AccountEmployeeTimeEntry e P pivot summyhours for weekd in[星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]现在作为pvt,我想对myhours列中的所有值求和,列中的数据的格式为12:2:45、4:6:12等,实际上我正在使用此查询-从select e.myhours、e.AccountProjectId、dbo.GetWeekdayNameOfDate.totaltime中选择*作为weekd,e.AccountEmployeeTimeEntry中的e.AccountEmployeeId e P pivot summyhours在[星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]作为pvt现在,我想将myhours列中的所有值相加,列中的数据采用此格式12:2:45,4:6:12 etc@MichaelCode:u是否可以使用此查询提供AccountEmployeeTimeEntry table的表结构?从选择e.myhours、e.AccountProjectId、dbo.GetWeekDayNameOfDate.totaltime as weekd中选择*从AccountEmployeeTimeEntry中选择e.AccountEmployeeId从AccountEmployeeTimeEntry e pivot summyhours在[星期一]、[星期二]、[星期三],【星期四】、【星期五】、【星期六】、【星期日】作为pvt,现在我想对myhours列中的所有值求和。列中的数据采用12:2:45、4:6:12等格式