根据开始和结束时间每分钟显示一行
Showing a row for every minute based on start and end time
我有一个 table,如下所示:
task_id start_date end_date
t1 2020-05-01 8:00:00 2020-05-01 9:45:00
t2 2020-05-01 8:30:00 2020-05-01 9:00:00
t3 2020-05-01 8:45:00 2020-05-01 9:30:00
我希望我的 SQL 输出根据开始日期和结束日期为已经过去的任务的每一分钟显示一行。因此,例如,t1 应该看起来像
task_id time
t1 2020-05-01 8:00:00
t1 2020-05-01 8:01:00
t1 2020-05-01 8:02:00
t1 2020-05-01 8:03:00
..... .....
t1 2020-05-01 9:45:00
同样,t2 看起来像
task_id time
t2 2020-05-01 8:30:00
t2 2020-05-01 8:31:00
t2 2020-05-01 8:32:00
t2 2020-05-01 8:33:00
..... .....
t2 2020-05-01 9:00:00
我正在看这个 thread 并试图模仿它,但我无法产生想要的结果。
我们将不胜感激。
谢谢大家!
递归 CTE 如下所示:
with recursive cte as (
select task_id, start_date, end_date
from t
union all
select task_id, start_date + interval 1 minute, end_date
from cte
where start_date < end_date
)
select task_id, start_date
from cte;
Here 是一个 db<>fiddle.
我有一个 table,如下所示:
task_id start_date end_date
t1 2020-05-01 8:00:00 2020-05-01 9:45:00
t2 2020-05-01 8:30:00 2020-05-01 9:00:00
t3 2020-05-01 8:45:00 2020-05-01 9:30:00
我希望我的 SQL 输出根据开始日期和结束日期为已经过去的任务的每一分钟显示一行。因此,例如,t1 应该看起来像
task_id time
t1 2020-05-01 8:00:00
t1 2020-05-01 8:01:00
t1 2020-05-01 8:02:00
t1 2020-05-01 8:03:00
..... .....
t1 2020-05-01 9:45:00
同样,t2 看起来像
task_id time
t2 2020-05-01 8:30:00
t2 2020-05-01 8:31:00
t2 2020-05-01 8:32:00
t2 2020-05-01 8:33:00
..... .....
t2 2020-05-01 9:00:00
我正在看这个 thread 并试图模仿它,但我无法产生想要的结果。
我们将不胜感激。
谢谢大家!
递归 CTE 如下所示:
with recursive cte as (
select task_id, start_date, end_date
from t
union all
select task_id, start_date + interval 1 minute, end_date
from cte
where start_date < end_date
)
select task_id, start_date
from cte;
Here 是一个 db<>fiddle.