Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从日期差异将00:45:00转换为0.45或将01:45:00转换为1.45?_Sql_Sql Server - Fatal编程技术网

Sql 从日期差异将00:45:00转换为0.45或将01:45:00转换为1.45?

Sql 从日期差异将00:45:00转换为0.45或将01:45:00转换为1.45?,sql,sql-server,Sql,Sql Server,如何从日期差异将00:45:00转换为0.45或01:45:00转换为1.45。我用下面的查询 select cast(datepart(hour, '01:45:00')+datepart(minute, '01:45:00') / 100.00 as decimal(7,4)); 但当得不到与上述相同的精确结果时,差别很大 选择cast(datediff(小时,'00:00:00','01:45:00')+datediff(分钟,'00:00','01:45:00')/100.00作为十进

如何从日期差异将00:45:00转换为0.45或01:45:00转换为1.45。我用下面的查询

select cast(datepart(hour, '01:45:00')+datepart(minute, '01:45:00') / 100.00 as decimal(7,4));
但当得不到与上述相同的精确结果时,差别很大


选择
cast(datediff(小时,'00:00:00','01:45:00')+datediff(分钟,'00:00','01:45:00')/100.00作为十进制(7,4))

第一个答案似乎是您想要的

如果分解第二个表达式,您将发现:

datediff(minute,'00:00:00','01:45:00')
计算结果为105,而不是45

如果要对日期部分使用算术运算,只需使用分钟:

cast(datediff(minute,'00:00:00','01:45:00') / 60 +
     (datediff(minute,'00:00:00','01:45:00') % 60 / 100.0
     ) as decimal(7, 4)
    )

第一个答案似乎就是你想要的

如果分解第二个表达式,您将发现:

datediff(minute,'00:00:00','01:45:00')
计算结果为105,而不是45

如果要对日期部分使用算术运算,只需使用分钟:

cast(datediff(minute,'00:00:00','01:45:00') / 60 +
     (datediff(minute,'00:00:00','01:45:00') % 60 / 100.0
     ) as decimal(7, 4)
    )

1.45是指十进制数吗?1:45是1小时加1的3/4,所以可能是1.75乘以1.45,你是说小数吗?1:45是1小时加上1的3/4,所以可能是1.75