postgresql - 为 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';
推荐阅读
- python - Check if array is in deque of arrays? Python
- git - 使用 Git 通过 Composer 加载的库被视为子模块
- python - 有什么方法可以在浏览器中获取 Pyqt5 中页面的 XPATH 吗?
- excel - 无法设置列表属性。无效的属性数组索引 - 组合框问题
- python - 我在 pandas 中的 .csv 文件的内存使用量比我的 RAM 大。这怎么可能?
- android - 动态创建的文本视图和编辑文本
- java - 为什么我的 fft 输出会为每个声音输入提供相似的数据?
- javascript - 一次查询,多个日期范围
- angular - ViewChild 升级到 Angular 9 后无法正常工作
- c++ - 每次返回双精度数组的元素时输出相同