Одна из первых вещей, которые я делаю в новой базе данных 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'
.