我的表中有一个列。我们在其中以格式 'HH:MM'
存储字符串值.在使用此表获取记录期间,一切正常
DATEDIFF(MINUTE, '00:00', ColumnName)
问题是当我们的值大于
23:59
时.它的显示错误如
Conversion failed when converting date and/or time from character string.
任何人都可以建议我实现这种情况的正确方法。
最佳答案
如果您将值存储为时间以外的其他内容,为什么不只存储分钟数并转换为您想要的输出格式?
否则,我建议您简单地将值转换为分钟:
select (cast(left(ColumnName, 2) as int) * 60 +
cast(right(ColumnName, 2) as int)
) as Minutes
如果您不使用日期/时间值,则不需要使用专门为它们设计的函数。
编辑:
要处理超过 99 小时的时间,请使用
charindex()
:select (cast(left(ColumnName, charindex(':', ColumnName) - 1) as int) * 60 +
cast(right(ColumnName, 2) as int)
) as Minutes
关于sql - 如何处理 DATEDIFF(MINUTE, '00:00' , '24:20' ) 类似场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755969/