我需要创建一个存储大于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数据类型 超出范围的日期时间值。
答案 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)