2015-10-29 5 views
0

Я получаю единственное целое число, которое должно представлять час. Итак, если он возвращает 1, это 1:00 и т. Д. На 24-часовых часах, 13, например, составляет 13:00. Мне нужно преобразовать это во времени в SQL.Преобразование целого числа во время

Я знаю, что в MYSQL они имеют функцию, которая делает это:

SEC_TO_TIME (TheHour * 60 * 60)

Есть ли эквивалент можно использовать в SQL? Как мне это сделать?

+0

Какой тип данных и формат вы должны быть возвращены? –

ответ

1

Вы можете сделать что-то подобное.

select cast(DATEADD(hour, 13, 0) as time) 

Достоинством является то, что он все равно будет работать даже с отрицательными числами или значения за 24.

+0

Спасибо, что эта работа отлично. Для будущих людей. Если моя переменная TheHour, это выбранный литой (DATEADD (час, TheHour, 0) как время) – vmedhe2

1

Есть два T-SQL функции:

DATEFROMPARTS (year, month, day) 

и

TIMEFROMPARTS (hour, minute, seconds, fractions, precision) 

, то вы можете использовать CONVERT, если вам нужно отформатировать его.

0
-- test data 
declare @hour_table table(hour_number int) 
while (select count(*) from @hour_table) < 24 
    begin 
     insert into @hour_table(hour_number) 
      select count(*) from @hour_table 
    end 

-- return results with your conversion to time string 
select 
    hour_number, 
    convert(varchar(8),timefromparts(hour_number, 0, 0, 0, 0),0) as time_string 
from @hour_table 
Смежные вопросы