Как выбрать из системного часа и минуты от 10 до 70 - PullRequest
0 голосов
/ 17 апреля 2019

Я придумал следующий вызов:

Мне нужно как-то выбрать из системных значений от 10 до 70 минут за минутой, как показано в следующем примере.

Час

10: 00

10: 01

10: 02

..

..

..

69: 59

Возможно ли это?

1 Ответ

0 голосов
/ 17 апреля 2019

Вот один из подходов, использующий рекурсивные 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...