我正在使用Excel 2013和SQL Server 2014.我想知道为什么在计算相同日期的日期差异时会得到两个不同的结果:
Excel中:
C2=IF(B2="",0,(DATE(YEAR(B2),MONTH(B2),DAY(B2))-DATE(YEAR(A2),MONTH(A2),DAY(A2)) + TIME(HOUR(B2),MINUTE(B2),SECOND(B2))-TIME(HOUR(A2),MINUTE(A2),SECOND(A2)))*24)
SQL Server:
--Ex 1:
cast(datediff(MINUTE, '2015-11-04 13:38:20.000', '2015-11-04 16:15:00.000') as float) / 60
结果:2.61666666666667
--Ex 2:
cast(datediff(MINUTE, '2015-11-04 13:38:20.000', '2015-11-04 16:15:00.000') as decimal(15, 5)) / 60
结果:2.61666666
谢谢。
答案 0 :(得分:1)
因为在您的SQL代码中,您可以在几分钟内获得差异,这会将差异四舍五入到最接近的分钟。在这种情况下,157分钟。如果以秒为单位取差值,除以60,您将看到实际差值为156.6666 ......分钟。
试试这个:
SELECT cast(datediff(s, '2015-11-04 13:38:20.000', '2015-11-04 16:15:00.000') AS DECIMAL(38,18)) / 3600
返回2.611111111111111111
,与Excel中的相同。