Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 天数时间总和_Sql_Sql Server_Vb.net_Tsql - Fatal编程技术网

Sql 天数时间总和

Sql 天数时间总和,sql,sql-server,vb.net,tsql,Sql,Sql Server,Vb.net,Tsql,这是我的桌子 AtdId MCId AtdDate CheckIn CheckOut Status 675 7 2013-10-03 2013-10-03 16:42:49.307 2013-10-03 16:43:10.317 0#0#56 676 7 2013-10-03 2013-10-03 16:46:28.730 2013-10-03 16

这是我的桌子

 AtdId  MCId    AtdDate              CheckIn                CheckOut            Status
    675 7   2013-10-03  2013-10-03 16:42:49.307         2013-10-03 16:43:10.317 0#0#56
    676 7   2013-10-03  2013-10-03 16:46:28.730         2013-10-03 16:46:35.780 0#0#7
    677 7   2013-10-03  2013-10-03 16:49:33.190     2013-10-03 16:49:35.140 0#0#2
    678 7   2013-10-03  2013-10-03 16:49:36.913         2013-10-03 16:49:38.377 0#0#2
    679 7   2013-10-03  2013-10-03 16:49:39.397     2013-10-03 16:49:40.023 0#0#1
    680 7   2013-10-03  2013-10-03 16:49:41.043         2013-10-03 16:49:41.703 0#0#0
    681 7   2013-10-03  2013-10-03 16:49:43.307         2013-10-03 16:49:45.063 0#0#2
    682 7   2013-10-03  2013-10-03 16:50:33.657         2013-10-03 16:50:45.783 0#0#12
    683 7   2013-10-03  2013-10-03 16:51:35.007         2013-10-03 16:52:42.877 0#1#7
状态字段0#0#0是小时#分钟#秒。如何计算每日时分和秒的总和以显示日期方面的总持续时间?
状态是数据库中的varchar,我正在使用MSSQL。

我仍然觉得从CheckIn和CheckOut列求和是一个更好的主意。然而,如果你想从状态中求和,这里有一种方法

WITH cte AS (
  SELECT 
    *,
    PARSENAME(REPLACE(Status,'#','.'), 1) AS StatusSecond,
    PARSENAME(REPLACE(Status,'#','.'),2) AS StatusMinute,
    PARSENAME(REPLACE(Status,'#','.'),3) AS StatusHour
  FROM tbl
)
SELECT [AtdDate], SUM(StatusHour*60*60 +  StatusMinute * 60 + StatusSecond) AS TotalTimeInSecond
FROM cte  
GROUP BY [AtdDate]
ORDER BY [AtdDate]

编辑:

若要按当日/周/月进行过滤,可以在上述查询中添加以下条件

WHERE DATEDIFF(week,AtdDate,GETDATE()) = 0 
-- You can change week to Day or Month 

更多细节,请参见

您正在使用的RDBMS是什么?“状态”字段的数据类型是什么?您提供的样本数据的预期结果是什么?请说明您迄今为止所做的尝试?仅仅显示输入并告诉“让这个为我工作”并不是这里应该问的问题。询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试的解决方案、它们不起作用的原因以及预期的结果。是否要对状态中的时间求和?这和SUM(DATEDIFF(second,CheckIn,CheckOut)一样吗?状态是在小时、分钟、秒内签入和签出的差异谢谢EricZ,但我只想要当前日期的totalsecond。我怎么做呢?添加“WHERE CAST(AtdDate as date)=CAST(GETDATE()as date)”谢谢Ericzeeee…)埃里克斯:如果我想知道本周和本月的总时间,我该怎么做?