0

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

该列将用于在datetime间隔之间执行计算:“时间”。

我在尝试

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

如果它

下面'23:59'而不是'107:37'正常工作。

'107:37'给出错误:

将 char 数据类型转换为 datetime 数据类型会导致 datetime 值超出范围。

4

1 回答 1

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)
于 2012-04-24T10:34:35.587 回答