gpt4 book ai didi

mysql - 在 SQL 中以分钟为单位动态生成时间间隔之间的时间序列

转载 作者:行者123 更新时间:2023-12-04 08:57:56 27 4
gpt4 key购买 nike

问题在这篇文章的最后。
我找到了这个链接来生成日期
Generating a series of dates
并修改它以生成间隔时间:

SET @start_time = "08:02";
SET @stop_time = "17:02";
SELECT
TIME_FORMAT(time(CONCAT(m3, m2, ':', m1, m0)) , "%H:%i") as Time
FROM
(SELECT 0 m0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS m0,
(SELECT 0 m1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6) AS m1,
(SELECT 0 m2 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) AS m2,
(SELECT 0 m3 UNION SELECT 1 UNION SELECT 2) AS m3
where time(CONCAT(m3, m2, ':', m1, m0)) is not null
and time(CONCAT(m3, m2, ':', m1, m0)) >= @start_time
and time(CONCAT(m3, m2, ':', m1, m0)) <= @stop_time
order by Time asc
这将生成此表:
Time
10:02
10:03
10:04
10:05
10:06
...
16:59
17:00
17:01
题?
这可以用更有效的方式编写吗?我想指定一个带有步骤的间隔,因此可以快速将其更新为每 X 分钟间隔。我不想将结果存储在数据库中,我只想即时生成它。因为我将把它与其他表连接起来。
我在 mysql 查询中经常使用它来制作易于在 Excel 中绘制的测量值的时间序列。

最佳答案

为此,我是递归 CTE 的粉丝:

with recursive times as (
select time('10:00:00') as time
union all
select time + interval 17 minute
from times
where time < time('17:00:00')
)
select *
from times;
Here是一个db<> fiddle 。

关于mysql - 在 SQL 中以分钟为单位动态生成时间间隔之间的时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63711844/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com