【问题标题】:Can I search if an interval is between another interval?我可以搜索一个间隔是否在另一个间隔之间?
【发布时间】:2022-01-28 03:09:46
【问题描述】:

我需要搜索某个日期或从该日期起 30 天后的任何一天是否介于一个间隔之间。使用 postgresql 能以某种方式实现吗?

【问题讨论】:

  • 您可以像my_date between date '2022-01-01' and date '2022-01-30' 一样简单地比较日期或时间戳。或者...您可以使用daterange(请参阅postgresql.org/docs/9.3/rangetypes.html)。
  • edit您的问题(通过点击下面的edit链接)并添加一些示例数据和基于该数据的预期输出为formatted text .请参阅here,了解有关如何创建漂亮的文本表格的一些提示。 (edit 您的问题 - 不要在 cmets 中输入代码或其他信息)

标签: sql postgresql datetime intervals


【解决方案1】:

您可以简单地检查间隔重叠:

SELECT daterange(current_date, current_date + 31) && '[2022-01-01,2022-01-31]';

还有tsrange 用于timestamp 的范围和tstzrange 用于timestamp with time zone 的范围。

【讨论】:

  • 昨天晚上我得到了同样的信息。如果它对任何人有用,请注意,根据 postgresql 版本,您可能必须对 dateranges 和 'overlaps' 使用不同的语法,而不是 '&&'
猜你喜欢
  • 1970-01-01
  • 2021-08-21
  • 2021-09-08
  • 2016-05-17
  • 2021-05-02
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多