2017-01-20 4 views
2

У меня есть отчет, в котором я должен вычислять общие отработанные часы любым сотрудником в неделю. Отчет отражает часы более 24 часов (или 86400 секунд). Я хочу преобразовать все секунды в формат «00:00:00», сохраняя формат столбцов как дату или время, чтобы я мог продолжить анализ с использованием поля времени.Преобразование секунд в формат «00: 00: 00» - SQL Server

Ниже то, что я пытался до сих пор:

Declare @WorkTimeInSeconds int 
Set @WorkTimeInSeconds = 144000 **--This value is an example. Mostly values are above 86400 seconds** 
Select ActualHoursWorked =  convert(varchar,(@WorkTimeInSeconds)/3600) 
      + ':' + right('0' + convert(varchar,((@WorkTimeInSeconds) %3600)/60),2) 
      + ':' + right('0' + convert(varchar,(@WorkTimeInSeconds) %60),2) 

Приведенный выше код дает мне то, что мне нужно, однако выше преобразует секунды в INT для VARCHAR, который не то, что мне нужно для отчета. Мне нужен вывод в формате datetime/time, который может дать мне результаты, подобные «40: 00: 00» для приведенного выше примера. Надеюсь, я могу предоставить всю информацию. Пожалуйста, помогите, поскольку я борюсь с этим из многих дней.

Ожидаемый результат: 40:00:00

+0

Что желаемый результат в течение 144000 секунд? –

+0

@ Выход AnoopH.N должен быть 40:00:00. Извините, забыли добавить ожидаемый результат. Теперь добавлен в вопрос. –

ответ

1

Может попробовать CONVERT стиль 108.

SELECT CONVERT(varchar(10),convert(varchar,(@WorkTimeInSeconds)/3600) 
      + ':' + right('0' + convert(varchar,((@WorkTimeInSeconds) %3600)/60),2) 
      + ':' + right('0' + convert(varchar,(@WorkTimeInSeconds) %60),2),108) 
Смежные вопросы