使用 start_end 和 end_date 检索特定月份的所有记录
Posted
技术标签:
【中文标题】使用 start_end 和 end_date 检索特定月份的所有记录【英文标题】:Retrieve all Records for a particular Month using start_end and end_date 【发布时间】:2021-04-27 23:58:32 【问题描述】:我有一个具有以下结构和数据的表
Product startdate enddate
ProdA 01/01/2020 15/01/2020
ProdB 29/01/2020 02/02/2020
ProdC 02/02/2020 03/03/2020
ProdD 20/12/2019 20/12/2020
我需要一个用于 redshift 的 sql 查询,它返回我提供的一个月内有效的所有产品。如果该产品在开始日期和结束日期之间有该月的任何一天,则考虑该月的有效期
因此,如果我要通过日期 01/01/2020(例如,如果您想将其格式化为 YYYY-mm,则可以根据解决方案进行修改。)我正在寻找 2020 年 1 月有效的记录,并且会预计返回以下产品
ProdA 生产分贝 产品
【问题讨论】:
【参考方案1】:你可以使用这个逻辑:
where startdate <= last_day('2020-01-01') and
enddate >= '2020-01-01'
也就是说,如果开始日期在月末之前,而结束日期在月初或之后,则存在重叠。
【讨论】:
以上是关于使用 start_end 和 end_date 检索特定月份的所有记录的主要内容,如果未能解决你的问题,请参考以下文章
如何正确总结datetime(end_date和begin date之间的区别) - mysql
MySQL 查询仅获取一条记录:当 end_date 为 null 或 max(end_date) 时