sql - 如何处理 DATEDIFF(MINUTE, '00:00' , '24:20' ) 类似场景?

标签 sql sql-server sql-server-2014

我的表中有一个列。我们在其中以格式 '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/

相关文章:

mysql - SQL添加具有相同id和不同第二id的表行

sql-server - 在 SQL 中解析 JSON

sql-server - 在 Coldfusion 中使用 nvarchar cfsqltype 和 jtds jdbc

sql - 将日期四舍五入到该月的第一天

c# - 如何在 MVC 中显示列总和

sql - 如何显示数据库表中的重复电子邮件计数?

SQL Server智能感知不刷新存储过程和函数列表

sql-server - 如何加入到 "Other"行

sql-server - "AT TIME ZONE"用于 SQL Server 2014 或更早版本的 SQL Server

sql - DB 记录属性的整数与字符与 Wordpress 架构