【发布时间】:2012-04-24 07:04:28
【问题描述】:
我需要创建一个存储大于 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 类型以及时间和日期函数呢?
-
只存储秒数不是更简单吗?转换为小时和分钟是简单的算术。
-
不,将数字存储为日期时间会更简单,并使用 datediff() 之类的函数。例如:stackoverflow.com/questions/1770594/…
-
要将小时和分钟转换为日期时间,请使用
select dateadd (hour, 107, dateadd(minute, 37, 0))。 0 给出 1-1-1900;您可能想将其更改为其他日期。
标签: sql sql-server sql-server-2005