【发布时间】:2015-06-10 12:10:18
【问题描述】:
我的表中有一个列。我们以'HH:MM'格式存储字符串值。在使用此表获取记录期间,一切正常
DATEDIFF(MINUTE, '00:00', ColumnName)
问题是我们的值大于23:59。
它显示错误,如
从字符串转换日期和/或时间时转换失败。
谁能建议我实现这种情况的正确方法。
【问题讨论】:
-
正确的方法是使用适当的数据类型。
-
实际上我们必须保存大于 '23:59' 的值,以便我们将数据类型设为 Varchar。
-
像
'24:20'这样的东西不能直接转换为TIME或DateTIME。您最好的选择可能是使用:将其拆分,然后将小时乘以 60 并添加分钟 -
SQL Server 没有表示时间跨度的数据类型(它只有表示一天中某个时间的类型)。因此,表示此数据的最自然方式可能是
int分钟数(如果您需要分钟粒度)。将其转换为hh:mmstring (或转换 from 这样的字符串)作为 UI 问题,而不是靠近 DB。 -
“24:20”实际上代表什么?这不是一天中的有效时间。
标签: sql sql-server sql-server-2014