Sql server 2008 如何在SQLServer2008中添加单个列的时间(如9:25:03+11:36:27=)
我有columntime数据类型,它包含如下值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
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等格式