TSQL datediff问题

时间:2017-06-27 02:31:19

标签: sql-server tsql datediff

我刚刚找到了使用

的真实数据
datediff(SECOND, TimeStart, TimeEnd) / 60 

不同
datediff(MINUTE, TimeStart, TimeEnd) 

我使用了SELECT

SELECT 
    DATEDIFF(SECOND, TimeStart, TimeEnd) AS seconds, 
    DATEDIFF(SECOND, TimeStart, TimeEnd) / 60 AS Mins1,
    DATEDIFF(MINUTE, TimeStart, TimeEnd) AS Mins2

我得到了这些结果:

seconds   mins1   mins2
-------------------------
  236        3       4
  620       10      10
  536        8       9
  443        7       8
  692       11      12
 1038       17      18   
  SUM       56      61

任何人都可以解释一下吗?

两次在T-SQL中获得分钟差异的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

这实际上涵盖在documentation

  

返回指定datepart的count(有符号整数)   在指定的startdate和enddate之间交叉的边界。

问题是用户想要该功能做其他事情。因此,2016-12-31 23:59:59和2017-01-01 00:00:01之间的年数为1年 - 即使日期/时间值相差2秒。

这是datediff()有经验的用户选择可用的最小合理单位(秒或毫秒)然后从中获得更高单位的原因之一。唉,这种情况几个月都不起作用,但它对大多数单位都有效。