使用 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 检索特定月份的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

如何选择 start_date 和相应的 end_date

如何正确总结datetime(end_date和begin date之间的区别) - mysql

秒表检定仪和瞬时日差检定仪使用介绍

MySQL 查询仅获取一条记录:当 end_date 为 null 或 max(end_date) 时

将 start_date 和 _end_date 加入另一个表并总结

Laravel 5.3 验证:由两列(start_date,end_date)设置的唯一周期时间