2017-02-07 17 views
2

часы в работника время хранится в базе данных в виде десятичногоДисплей HH: мм от десятичной (Hm)

4:30 PM хранящегося в 16.50

Я хотел бы использовать новый столбец базы данных для преобразования десятичных чисел "HH: мм"

16,50 отображается как "16:30"

Я считаю, что ответ будет выглядеть как

CONVERT(DATETIME,CONVERT(NVARCHAR,CLOCK_IN_TIME)) 

но форматирование вывода неверно, и обычно я получаю ошибку «Конверсия удалось при преобразовании даты и/или времени из символьной строки»

+0

Вы преобразования только время в DateTime? Для этого потребуется и дата. Попробуйте использовать тип данных Time. https://msdn.microsoft.com/en-us/library/bb677243.aspx?f=255&MSPPError=-2147217396 –

+0

@Kevin см. обновленный ответ с секундами ... более точный –

ответ

1

Другой вариант

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

Возвращает

07:15 
0

Хммм. , , Если вы используете SQL Server, вы можете сделать:

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

Спасибо. Выходы теперь 12:07:48 для ввода 7:48 (так что часы двигаются до минут, а минуты идут в секунды), нужно от часа до часов и минут до минут – Kevin

+0

@Kevin. , , Забавно. Когда я его протестировал, я использовал «минуту», но по какой-то причине явно набрал «второй». –