【发布时间】:2022-01-12 00:30:18
【问题描述】:
我想计算两个日期时间变量之间的确切小时差。小时差应该是这样的:
1.5
2
6.25
任何人请帮忙..提前谢谢...
【问题讨论】:
-
6.25 = 多少小时和分钟?
-
@techdo 你肯定可以在 0.25 小时内计算出多少分钟?
标签: sql sql-server sql-server-2008
我想计算两个日期时间变量之间的确切小时差。小时差应该是这样的:
1.5
2
6.25
任何人请帮忙..提前谢谢...
【问题讨论】:
标签: sql sql-server sql-server-2008
您可以使用DATEDIFF 找出分钟的差异并将其转换为小时:
select datediff(mi, startdate, enddate)
假设 1.5 表示 1 小时 30 分钟,您可以简单地将结果除以 60:
select datediff(mi, startdate, enddate) / 60.0
【讨论】:
保持简单:
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 返回一个整数。因此,它永远不会像分钟那样给出小数部分。
它会帮助你....
Declare @Date1 dateTime
Declare @Date2 dateTime
Set @Date1 = '22:30:00'
Set @Date2 = '00:00:00'
Select Cast((@Date1 - @Date2) as Float) * 24.0
【讨论】:
FLOAT,它有自己的注意事项,绝对不能满足“完全”的要求。
要获得 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
【讨论】:
请尝试:
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'
【讨论】: