在SQL Server 2005中计算超过24小时

时间:2012-04-24 07:04:28

标签: sql sql-server sql-server-2005

我需要创建一个存储大于24小时的列。例如'25:00:00''129:23:12'等。

该列将用于在datetime间隔之间执行计算:'time'。

我在尝试

SELECT  CAST((CAST(CAST(RIGHT('107:37', 6) as datetime) AS FLOAT))/(207.160) AS DATETIME)

如果

低于'23:59'而非'107:37'工作正常。

'107:37'给出错误:

  

将char数据类型转换为datetime数据类型   超出范围的日期时间值。

1 个答案:

答案 0 :(得分:2)

只需将值存储为日期时间数据类型。您可以对日期时间数据类型进行数学计算,例如+, - ,SUM,MIN,MAX等,您也可以使用DateDiff和DateAdd。你将要遇到的唯一棘手的问题是将值显示为HHHH:mm:ss。不过你可以轻松地做到这一点:

DECLARE @datetime DATETIME
SET @datetime = 4.2
SELECT CAST((FLOOR(CAST(@datetime AS FLOAT)) * 24) + DatePart(Hour, @datetime) AS VARCHAR) + 
    ':' + CAST(DatePart(Minute, @datetime) AS VARCHAR)
    + ':' + CAST(DatePart(Second, @datetime) AS VARCHAR)