如何在SQL Server 2008中转换十进制时间

时间:2012-07-30 04:11:14

标签: sql-server-2008

我有十进制时间,我无法转换为时间。

DECLARE @hours decimal(5,3) 
SELECT @hours = 20.30 //20 Hrs and 30 mins  

我需要以下格式输出

 Hours  20.5 AS Time (data type)

以下是我的代码

  select cast(hours /24 as datetime) 

此代码的输出为20.18小时。但是我需要20.5小时

1 个答案:

答案 0 :(得分:2)

由于小数部分并不真正代表小时的小数部分,因此如果关闭则需要切断并单独处理。

在SQL Server 2012中:

select TIMEFROMPARTS ( floor(hours), 100*(hours - floor(hours)), 0, 0, 0 )

在SQL 2012之前:

select cast(cast(floor(hours) as char(2))+':'+cast(floor(100*(hours - floor(hours))) as char(2)) as time)