我有一张桌子
我的范围从“2019-01-02”到“2019-01-04”
我需要从给定范围之间的started_at和ended_at(可为空)表中生成ID和DATES(生成)
结果必须是这样的:
表中的 ID 4 不包含在结果中,因为它的started_at 和ended_at 不在“2019-01-02”和“2019-01-04”范围内
我需要在 postgres 中执行此操作的查询。
我有一张桌子
我的范围从“2019-01-02”到“2019-01-04”
我需要从给定范围之间的started_at和ended_at(可为空)表中生成ID和DATES(生成)
结果必须是这样的:
表中的 ID 4 不包含在结果中,因为它的started_at 和ended_at 不在“2019-01-02”和“2019-01-04”范围内
我需要在 postgres 中执行此操作的查询。
利用generate_series()
select t.id, g.dt::date
from the_table t
cross join generate_series(t.started_at::date + 1,
least(t.ended_at::date, date '2019-01-04'),
interval '1 day') as g(dt)
where t.started_at >= date '2019-01-02'
and t.started_at < date '2019-01-04';
工作了这个变种:
select t.id, g.dt::date from the_table t
cross join generate_series(t.started_at::date + 1,
least(t.ended_at::date, date '2019-01-04'), interval '1 day') as g(dt)
where dt >= date '2019-01-02' and dt < date '2019-01-04';