Sql server 在DATEDIFF SQL Server中仅显示准确的小时数
我正在努力改变信仰Sql server 在DATEDIFF SQL Server中仅显示准确的小时数,sql-server,db2,Sql Server,Db2,我正在努力改变信仰 Select Dept_ID, Student_CODE, ((SUM(TIMESTAMPDIFF(4,CHAR(TIME_OUT -TIME_IN)))* 1.0e0) / 60) HOURS from d.TIME_CLOCK where SYSTEM_DATE BETWEEN '2015-12-09' AND '2015-12-09' and Dept_ID = 109 Group By Dept_ID, Student_
Select
Dept_ID, Student_CODE,
((SUM(TIMESTAMPDIFF(4,CHAR(TIME_OUT -TIME_IN)))* 1.0e0) / 60) HOURS
from
d.TIME_CLOCK
where
SYSTEM_DATE BETWEEN '2015-12-09' AND '2015-12-09' and Dept_ID = 109
Group By
Dept_ID, Student_CODE
上面的db2代码到SQL Server代码如下
Select
Dept_ID, Student_CODE,
((SUM(-DATEDIFF(MINUTE, TIME_OUT, TIME_IN)) * 1.0e0) / 60) HOURS
from
TIME_CLOCK
where
SYSTEM_DATE BETWEEN '2015-12-09' AND '2015-12-09'
AND (Dept_ID = 109)
Group By
Dept_ID, Student_CODE
但是,在执行此操作时,尽管TIME OUT
(datetime
)和TIME
(datetime
)中的TIME>值相同,但这两个查询的HOURS
列的值却不同
如何在SQL Server中获得精确的小数<代码>小时数<代码>小时数?您得到的值是多少,您期望的值是多少?1)您的值在两种情况下都不是“小数”,而是(二进制)浮点,这是有区别的。你到底想要哪一个?浮点数适用于“足够接近”的数学,就像物理一样,但小数用于金钱之类的东西,我想这是你们想要的。2) . 3) DB2上的TIMESTAMPDIFF
返回一个估计值(因为日期减法的结果),所以我假设SQL Server返回的结果是正确的。您得到的值是什么,您期望的值是什么?1)在这两种情况下,您的值都不是“小数”,而是(二进制)浮点,这是不同的。你到底想要哪一个?浮点数适用于“足够接近”的数学,就像物理一样,但小数用于金钱之类的东西,我想这是你们想要的。2) . 3) DB2上的TIMESTAMPDIFF
返回一个估计值(因为日期减法的结果),所以我假设SQL Server返回的结果是正确的。