从十进制显示 HH:mm (H.m)

Display HH:mm from decimal (H.m)

员工的打卡时间以小数形式存储在数据库中

4:30 PM stored as 16.50

我想使用新的数据库列将小数转换为 "HH:mm"

16.50 displayed as "16:30"

我相信答案会类似于

CONVERT(DATETIME,CONVERT(NVARCHAR,CLOCK_IN_TIME))

但是输出的格式不正确,通常我会得到错误 "Conversion failed when converting date and/or time from character string"

嗯。 . .如果你使用的是SQL服务器,你可以这样做:

dateadd(minute,
        floor(val) * 60 + 100 * (val - floor(val)),
        0)

另一种选择

Declare @T decimal(10,2) = 7.25
Select Format(DateAdd(SECOND,ceiling((@T/24)*86400),0),'HH:mm')

Returns

07:15