TSQL datediff 问题

TSQL datediff issue

我刚刚发现使用真实数据

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 分钟差异的正确方法是什么?

这实际上包含在 documentation:

Returns the count (signed integer) of the specified datepart boundaries crossed between the specified startdate and enddate.

问题是用户想要该函数做其他事情。因此,2016-12-31 23:59:59 和 2017-01-01 00:00:01 之间的年数是 1 年——即使 date/time 值相隔 2 秒。

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