首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL“重叠”只获取开始和结束之间的日期(不包括开始日期和结束日期)

SQL“重叠”只获取开始和结束之间的日期(不包括开始日期和结束日期)
EN

Stack Overflow用户
提问于 2011-03-07 08:50:48
回答 3查看 686关注 0票数 0

我使用此查询获取对象与"start_date“和"end_date”之间的时间重叠,此外,我希望获取日期为的对象在start_date上结束,对象开始于end_date

我使用

代码语言:javascript
复制
where("(start_date, end_date) overlaps (date ?, date ?), start_date, end_date"

但是对象有日期<=start_date>=end_date is 而不是 get。

这个“重叠”对象只有日期为start_date< dates< end_date,而不是"=“。

例如,start_date='2011/2/1',end_date='2011/3/31‘。对象的日期为“2011/2/1”或“2011/3/31”的起始日期,仅为“2011/2/1”和“2011/3/31”之间的日期。如何包含保存日期结束在start_date上而在end_date上开始的对象?

----------------------Edit----------------------------

我试着用:

代码语言:javascript
复制
where("(start_date, end_date) overlaps (date ?, date ?), start_date-1.day, end_date+1.day"

为了解决这个问题,但是当我像上面这样做时,如果start_date='2011/2/1',end_date='2011/3/31',那么对象也包含'2011/1/31‘,也是不应该得到的返回。

EN

回答 3

Stack Overflow用户

发布于 2011-03-07 12:31:47

在SQL方面,您希望生成类似的内容,前提是

  • S1、E1是第一个范围的开始日期和结束日期,
  • S2、E2是第二个范围的开始日期和结束日期,
  • 无S1、E1、S2、E2为空。

其中(S1,E1)重叠(S2,E2)或(E1 = S2)或(E2 = S1)

您需要两个“或”子句,因为在一般情况下,您不知道哪个范围更早。

票数 1
EN

Stack Overflow用户

发布于 2011-03-07 09:09:03

试试这个:

代码语言:javascript
复制
where("start_date >= ? and end_date <= ?", start_date.beginning_of_day, end_date.end_of_day)

这应该包括从start_date到end_date的所有内容;-)希望它能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2011-03-07 09:28:03

假设表的详细信息和属性(包括日期),假设我想要两个特定日期的信息,比如从start_date到end_date。

因此,细节.(“日期在?和?",start_date,end_date)将给出所需的信息,包括start和end dates.Hope

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5217589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档