【问题标题】:tsql DATEDIFF call in minutes without rounding off secondstsql DATEDIFF 以分钟为单位调用,不四舍五入秒
【发布时间】:2012-12-17 01:32:42
【问题描述】:

我在 SQL Server 2008 中调用 DATEDIFF() 作为存储过程的一部分,它可能返回的值可能小至 3 秒或更短。我希望格式为 MM:SS(即 3 秒时的 00:03)。我最初是在几分钟内使用该呼叫:

DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)

但是,这是四舍五入到最接近的分钟,因此会删除秒值。如何使用 DATEDIFF 实现上述指定的格式?

【问题讨论】:

    标签: sql-server-2008 tsql datetime datediff


    【解决方案1】:

    精确到秒:

    DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable)
    

    Ref.

    注意:DATEDIFF 不会给你一个“格式”。它只返回一个整数。所以你需要适当地转换/格式化。

    我怀疑您最容易获得的最接近的方法是使用格式为 108CAST

    select convert(char(8), dateadd(ss, DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, 
                                                     SELECT MAX(EndDate) FROM myTable)), 
                   cast(0 as DateTime)) , 108)
    

    例如

    select convert(char(8), dateadd(ss, DATEDIFF(ss, '2012-12-16 12:00:00', 
                                                     '2012-12-16 12:13:09'), 
                                    cast(0 as DateTime)), 108)
    

    返回:

    00:13:09
    

    [注意:如果要四舍五入到最接近的 3 秒,可以修改:TSQL: Round to Nearest 15 Minute Interval]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 2014-08-06
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2011-03-28
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多