Вот один из подходов, использующий рекурсивные CTE для генерации последовательностей, которые вам нужны для часов и минут:
DECLARE @start_hour int = 10;
DECLARE @end_hour int = 69;
DECLARE @start_minute int = 0;
DECLARE @end_minute int = 59;
WITH hours AS (
SELECT @start_hour hour
UNION ALL
SELECT hour + 1 FROM hours WHERE hour < @end_hour
),
minutes AS (
SELECT @start_minute minute
UNION ALL
SELECT minute + 1 FROM minutes WHERE minute < @end_minute
)
SELECT
CAST(hour AS VARCHAR(2)) + ':' + RIGHT('00' + CAST(minute AS VARCHAR(2)), 2)
FROM hours
CROSS JOIN minutes
ORDER BY
hour,
minute;
Демо
Две последовательности выше представляют возможные значения часов и минут.Мы используем перекрестное соединение для генерации всех комбинаций.Обратите внимание, что минуты должны быть дополнены нулями для случая, когда minute
может принимать значение в диапазоне от 0 до 9.