【发布时间】:2014-02-17 14:44:56
【问题描述】:
如何对sql server中的时间列求和
我想总结周一、周二、周三、周四、周五和周六的时间并更新到 Tot_hrs 我有更新逻辑我无法总结周一到周六的时间
CREATE TABLE WEEKLY_ATTN(
[SYSID] [int] IDENTITY(1,1) NOT NULL,
[EMPLOYEE_SYSID] [int] NULL,
[Mon_day] [varchar](10) NULL,
[Tue_day] [varchar](10) NULL,
[Wed_day] [varchar](10) NULL,
[Thu_day] [varchar](10) NULL,
[Fri_day] [varchar](10) NULL,
[Sat_day] [varchar](10) NULL,
[Tot_Hrs] [varchar](20) NULL
);
INSERT INTO WEEKLY_ATTN (employee_sysid,mon_day,tue_day,wed_day,thu_day,fri_day,sat_day)
values(41,'11:01','11:57','11:02','10:19','09:26',null);
下面是我用过的查询
select mon_day,Tue_day,wed_day,thu_day,fri_Day,sat_day,
cast(dateadd(s,
isnull(datediff(s, 0, mon_day), 0)+
isnull(datediff(s, 0, Tue_day), 0)+
isnull(datediff(s, 0, wed_day), 0)+
isnull(datediff(s, 0, Thu_day), 0)+
isnull(datediff(s, 0, fri_day), 0)+
isnull(datediff(s, 0, sat_day), 0)
,0) as time(0)) as Tot_hrs
from weekly_attn where employee_sysid=41;
mon_day Tue_day wed_day thu_day fri_Day sat_day tot_hrs
---------------------------------------------------------
11:01 11:57 11:02 10:19 09:26 NULL 05:45:00
但是总小时数是 53:45 小时,任何人都可以纠正我的错误。有什么帮助吗?
【问题讨论】:
-
我通过以下方式得到了答案
-
嗨。哪一种是“跟随方式”?
-
我通过以下方式得到了答案 set @V_TOTAL_HRS=(select isnull(datediff(s, 0, mon_day), 0)+ isnull(datediff(s, 0, Tue_day), 0)+ isnull(datediff(s, 0, wed_day), 0)+ isnull(datediff(s, 0, Thu_day), 0)+ isnull(datediff(s, 0, fri_day), 0) from week_attn where employee_sysid=@V_EMPID) - -select @V_TOTAL_HRS=cast(@V_TOTAL_HRS/3600 as varchar)+':'+cast((@V_TOTAL_HRS%3600)/60 as varchar) -- 53:45
-
干得好兄弟.. 继续努力:)
标签: sql-server sql-server-2008-r2