如何从record_b表筛选begin_date至end_date包含指定年月的记录?
问题
我有一张record_b表,表结构及数据如下:
| id | begin_date | end_date |
|---|---|---|
| 2 | 2022-09-04 | 2022-10-03 |
| 3 | 2022-10-04 | 2022-10-31 |
| 4 | 2022-11-04 | 2022-12-03 |
| 5 | 2022-12-04 | 2023-01-03 |
| 6 | 2023-01-04 | 2023-02-03 |
| 7 | 2023-02-04 | null |
需求:输入指定年月(格式为YYYY-MM),筛选出begin_date至end_date的时间区间与该年月存在交集的记录。示例:
- 输入
2023-01,应返回id为5和6的记录 - 输入
2022-12,应返回id为4和5的记录
我尝试用BETWEEN语句实现,但处理跨年的月份时存在问题,当前使用的代码片段如下:
and v_year BETWEEN EXTRACT(YEAR FROM PC.begin_date) AND EXTRACT(YEAR FROM PC.end_date) AND v_month BETWEEN EXTRACT(MONTH FROM PC.begin_date) AND EXTRACT(MONTH FROM PC.end_date)
内容的提问来源于stack exchange,提问作者Jake Paul
相关产品推荐
相关产品推荐

