【问题标题】:Difference between two dates in exact number of hours in SQLSQL中两个日期之间的确切小时数差异
【发布时间】:2022-01-12 00:30:18
【问题描述】:

我想计算两个日期时间变量之间的确切小时差。小时差应该是这样的:

1.5
2
6.25

任何人请帮忙..提前谢谢...

【问题讨论】:

  • 6.25 = 多少小时和分钟?
  • @techdo 你肯定可以在 0.25 小时内计算出多少分钟?

标签: sql sql-server sql-server-2008


【解决方案1】:

您可以使用DATEDIFF 找出分钟的差异并将其转换为小时:

select datediff(mi, startdate, enddate)

假设 1.5 表示 1 小时 30 分钟,您可以简单地将结果除以 60:

select datediff(mi, startdate, enddate) / 60.0

【讨论】:

    【解决方案2】:

    保持简单:

    declare @date1 datetime
    declare @date2 datetime
    
    select @date1 = GETDATE();
    select @date2 = '2013-02-02 14:05'
    
    select DATEDIFF(hh, @date2, @date1)
    
    
    Results
    -----------
    71
    
    (1 row(s) affected)
    

    【讨论】:

    • DATEDIFF 返回一个整数。因此,它永远不会像分钟那样给出小数部分。
    【解决方案3】:

    它会帮助你....

      Declare @Date1 dateTime
      Declare @Date2 dateTime 
      Set @Date1 = '22:30:00'   
      Set @Date2 = '00:00:00'
      Select Cast((@Date1 - @Date2) as Float) * 24.0
    

    【讨论】:

    • 太棒了。这个解决方案是唯一(到目前为止)克服“DATEDIFF 返回一个经常溢出的 INT”问题的解决方案。
    • 除了它使用的是FLOAT,它有自己的注意事项,绝对不能满足“完全”的要求。
    【解决方案4】:

    要获得 HH:MM 中的精确时差,请在 MS-SQL 中尝试以下代码

     Declare @InTime datetime='2017-11-27 10:00:00',
     @OutTime datetime='2017-11-27 11:15:00'
    
     SELECT CONVERT(varchar(5),DATEADD(minute,DATEDIFF(minute,@InTime,@OutTime),0), 114)
     -----------
     Result
     01:15
    

    【讨论】:

      【解决方案5】:

      请尝试:

      declare @dt1 datetime, @dt2 datetime, @Seconds int
      select @dt1='2013-02-05 14:05:55.113', @dt2 =getdate()
      set @Seconds=datediff(second, @dt1, @dt2)
      
          declare @Hour nvarchar(50)
          declare @Min nvarchar(50)
          declare @MinTemp int        
          if @Seconds >0 
          begin
          set @Hour=cast((@Seconds / 3600) as nvarchar(20)) +' Hrs '
          set @MinTemp= (@Seconds % 3600) / 60
          set @Min=cast(@MinTemp as nvarchar(20))
          if  @MinTemp<10 
              select @Hour+'0'+@Min +' Min'
          else
              select @Hour+@Min +' Min'
          end
          else 
          select '00 Hrs 00 Min'
      

      【讨论】:

        猜你喜欢
        • 2011-05-31
        • 1970-01-01
        • 2015-06-21
        • 2021-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 2014-01-18
        相关资源
        最近更新 更多