【问题标题】:TSQL datediff issueTSQL datediff 问题
【发布时间】:2017-06-27 02:31:18
【问题描述】:

我刚刚发现使用真实数据,

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

【问题讨论】:

    标签: sql-server tsql datediff


    【解决方案1】:

    这其实是在documentation:

    返回指定日期部分的计数(有符号整数) 在指定的开始日期和结束日期之间跨越边界。

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

    这是datediff() 的有经验的用户选择可用的最小合理单位(秒或毫秒)然后从中推导出更高单位的原因之一。唉,这几个月都行不通,但它确实适用于大多数单位。

    【讨论】:

    • 好的,明白了,但是我必须使用 datediff(SECOND, TimeStart, TimeEnd)/60 datediff(MINUTE, TimeStart, TimeEnd) 做什么?
    • 这取决于您要计算的内容。我认为第一个更准确,特别是如果你除以60.0,所以你不只是在做整数运算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多