【问题标题】:How to get the number of hours between the two dates in sql如何在sql中获取两个日期之间的小时数
【发布时间】:2017-08-29 20:30:27
【问题描述】:

如何在 SQL Server 中获取两个日期之间的小时数

例子:

staffing_start_date (2017-08-01 06:00:00.00000)
staffing_end_dt (2017-08-01 18:00:00.00000)

【问题讨论】:

标签: sql sql-server


【解决方案1】:

你会使用datediff():

select datediff(hour, staffing_start_date, staffing_end_date)

【讨论】:

    【解决方案2】:

    如果需要小数小时数,可以在下面使用

    DATEDIFF(second, staffing_start_date, staffing_end_date) / 3600.0
    

    【讨论】:

    • 这正是我所需要的。谢谢。
    • 不客气。您可以检查此作为关闭此查询的答案。谢谢。
    【解决方案3】:

    请注意 DateDiff 的意外问题。它根本没有四舍五入。它将截断到您正在寻找的级别(天、小时、分钟等)

    例如,这两个都将返回 1,因此大多数时候将 Ferdinand 的答案四舍五入更合适。

    declare @Start DateTime = '1/1/17 7:59 AM'
    Declare @End Datetime = '1/1/17 8:00 AM'
    select DATEDIFF(hour, @Start, @end)
    
    
    declare @Start DateTime = '1/1/17 7:01 AM'
    Declare @End Datetime = '1/1/17 8:59 AM'
    select DATEDIFF(hour, @Start, @end)
    

    【讨论】:

      【解决方案4】:

      感谢 @Jay Wheeler 的 cmets。

      如果您希望小时非常具体,您可以使用如下所示: Declare @Start DateTime = '1/1/17 7:59 AM' Declare @End Datetime = '1/1/17 8:00 AM' select DATEDIFF(MINUTE, @Start, @end) /60 AS Hour

      【讨论】:

        【解决方案5】:

        如果您不理解其他答案,可以使用DATEDIFF

        【讨论】:

          【解决方案6】:

          日期只是数字。数字的整数部分是日期,小数部分是时间。要获得天数差异,您只需转换为 int 并将小时数差异乘以 24。

          DECLARE @Date1 DateTime
          DECLARE @Date2 DateTime
          
          SELECT @Date1 =  {ts '2017-08-29 00:00:00.000'},
                 @Date2 =  {ts '2017-08-27 00:00:00.000'}
          
          SELECT  CONVERT(int, @Date1) - CONVERT(int, @Date2)        AS DifferenceInDays
          
          SELECT (CONVERT(int, @Date1) - CONVERT(int, @Date2)) * 24  AS DifferenceInHours
          

          或者你可以使用DATEDIFF

          【讨论】:

            【解决方案7】:

            DATEDIFF函数-https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql

            对于您的问题,您可以使用:

            • DATEDIFF( HOUR, staffing_start_date , staffing_end_dt )
            • DATEDIFF( HH, staffing_start_date , staffing_end_dt )

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-01-29
              • 1970-01-01
              • 2014-07-13
              • 2015-06-18
              • 2019-05-07
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多