SQL中两个日期之间的精确小时数差异

11

我希望能够计算出两个日期时间变量之间的确切小时差。这个小时差应该像这样是精确的:

1.5
2
6.25

有人能帮个忙吗?先谢谢了...


6.25 = 多少小时和分钟? - TechDo
@techdo,你肯定能算出0.25小时有多少分钟吧? - Tobsey
5个回答

33
你可以使用DATEDIFF函数找到分钟差并将其转换为小时:
select datediff(mi, startdate, enddate)

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

select datediff(mi, startdate, enddate) / 60.0

5

保持简单:

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)

7
DATEDIFF 返回一个整数,因此它不会给出小数部分,例如分钟。 - Tobsey

4

it will help you....

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

1
太棒了。这个解决方案是目前唯一能克服“DATEDIFF返回的INT经常会溢出”的问题的方法。 - WonderWorker
除了它使用具有自身注意事项并绝对无法满足“精确”的要求的FLOAT之外。 - Pred

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

 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

1

Please try:

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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接