Excel和SQL Server之间的日期差异计算

时间:2017-08-24 04:30:42

标签: sql-server excel date

我正在使用Excel 2013和SQL Server 2014.我想知道为什么在计算相同日期的日期差异时会得到两个不同的结果:

Excel中:

enter image description here

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

谢谢。

1 个答案:

答案 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中的相同。