sql - DATEDIFF 将分钟转换为十进制

标签 sql sql-server casting datediff

我在将分钟转换为小数时遇到了一些问题,即使我已经查看了 SO 的其他回复。

select cast(datediff(minute, min(start_time), min(complete_time)) as decimal (10,10)) 
from TRACKED_OBJECT_HISTORY TOH1 
where TOH1.op_name = 'Assembly'

结果返回,但我总是得到 2.00、4.00、5.00 之类的结果,而不是 1.86、3.99、5.03 之类的数字。我猜它是在事后转换(我也试过转换功能无济于事)。有什么想法吗?

最佳答案

Datediff 返回一个整数,而不是 float 或数字。

为了得到你想要的,也许你应该在几秒钟内做 diff 然后除法:

select cast(datediff(second, min(start_time), min(complete_time))/60.0 as decimal (10,10))
from TRACKED_OBJECT_HISTORY TOH1 where TOH1.op_name = 'Assembly'

关于sql - DATEDIFF 将分钟转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11894202/

相关文章:

java - 无法将 JTextField 设置为 int

c# - 检查实例是否继承自 C# 中类的泛型或非泛型版本

sql - 如何从数据库中获取保存的文本布局

java - 如何在Java中保存每个字段的变量查询结果?

SQL 查询连接四个表

sql - SYS.DM_TRAN_LOCKS 表 RESOURCE_ASSOCIATED_ENTITY_ID 列中的奇怪值

MySQL - 如何限制每个 ID 一个结果?

sql-server - 为 SQL Server 数据库版本控制生成数据库脚本

sql - BCP错误: columns may be skipped only when copying into the Server

c++ - 字符签名最严重的副作用。 (解释符号对字符和类型转换的影响)