如何在SQL Server中将hh:mm:ss转换为秒超过24小时

Waq*_*qas 2 sql sql-server sql-server-2008

我有一个表名tblAttend,其中一列名为WorkHrsdatatype varchar.

简单选择查询的结果是

在此输入图像描述

我总结了这个列的值,并在几秒钟内得到了我的查询结果

select sum(DATEDIFF(SECOND, '0:00:00', WorkHrs )) 
from tblAttend
Run Code Online (Sandbox Code Playgroud)

它显示了这个输出:

在此输入图像描述

现在的问题是,当总和WorkHrs大于24小时时,它会抛出一个错误:

在此输入图像描述

你有什么建议可以解决这个问题?提前致谢

Clu*_*Tim 8

尝试:

DECLARE @DURATION TIME = '01:43:24'

SELECT DATEDIFF(SECOND, '1/1/1900', CONVERT(DATETIME, @DURATION))
Run Code Online (Sandbox Code Playgroud)

  • TIME 不能表示超过 24 小时 [T-Sql TIME](https://learn.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql?view=sql-server-2016 ),所以这不适用于原来的问题。但如果您的时间不超过 24 小时,则可以进一步简化: SELECT DATEDIFF(SECOND, 0, @DURATION); 不需要 1900 文字或 CONVERT。 (2认同)

Ewa*_*wan 7

通过将时间转换为字符串,然后乘以与每个部分相关的秒数,尝试将每次分成其组成部分.

数据转换为整数是隐式的

select Sum(Left(WorkHrs,2) * 3600 + substring(WorkHrs, 4,2) * 60 + substring(WorkHrs, 7,2))
from tblAttend
Run Code Online (Sandbox Code Playgroud)