Подтвердить что ты не робот

Эффективный способ конвертировать секунды в минуту и ​​секунды в sql server 2005

Предположим, что у меня есть 90 секунд. Если я хочу отобразить результат в минутах и ​​секунду, я делаю это с помощью

select Time= '0' + CAST( 90/60 as varchar(2)) + ':' +  CAST( 90%60 as varchar(2)) 

Выходной сигнал

Время
 1:30

Я добавил 0 (ноль), потому что если вы делаете select getdate(), вывод будет

yyyy-mm-dd hh: mm: ss: ms

Каков стандартный способ и рекомендуемая практика для такого преобразования?

Спасибо

4b9b3361

Ответ 1

С часами:

SELECT CONVERT(CHAR(8),DATEADD(second,90,0),108)
00:01:30

Игнорирование часов:

SELECT RIGHT(CONVERT(CHAR(8),DATEADD(second,90,0),108),5)
01:30

Ответ 2

Попробуйте следующее:

select convert(varchar(10), dateadd(second, 15794, 0), 108)

Ответ 3

Одна из первых вещей, которые я делаю в новой базе данных SQL, добавляет функцию Timespan, подобную этой (хотя я имею тенденцию включать дни и миллисекунды):

CREATE FUNCTION dbo.TimeSpan
(
    @Hours int,
    @Minutes int,
    @Seconds int
)
RETURNS datetime
AS BEGIN
    RETURN DATEADD(SS, @Hours * 3600 + @Minutes * 60 + @Seconds, 0)
END

Затем вы можете отформатировать это, как хотите:

SELECT SUBSTRING(CONVERT(char(8), dbo.TimeSpan(0, 0, 90), 108), 4, 5)

Сначала это может выглядеть сложнее, но возможность повторного использования функции Timespan очень удобна с течением времени. Для меня это похоже на хак, чтобы всегда писать призывы DATEADD против 0 или '1753-01-01'.