如何从10到70的系统小时和分钟中进行选择

问题描述 投票:-2回答:1

我提出了以下挑战:

我需要从系统值中选择10到70分钟,如下例所示。

小时

10:00

10:01

10:02

..

..

..

69:59

可能吗?

sql-server
1个回答
0
投票

这是一种方法,使用递归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;

Demo

上面的两个序列代表小时和分钟的可能值。我们使用交叉连接来生成所有组合。请注意,对于minute可能采用介于0和9之间的值的情况,需要将分钟填充为零。

© www.soinside.com 2019 - 2024. All rights reserved.