我使用此查询获取对象与"start_date“和"end_date”之间的时间重叠,此外,我希望获取日期为的对象在start_date上结束,对象开始于end_date。
我使用
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----------------------------
我试着用:
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‘,也是不应该得到的返回。
发布于 2011-03-07 12:31:47
在SQL方面,您希望生成类似的内容,前提是
其中(S1,E1)重叠(S2,E2)或(E1 = S2)或(E2 = S1)
您需要两个“或”子句,因为在一般情况下,您不知道哪个范围更早。
发布于 2011-03-07 09:09:03
试试这个:
where("start_date >= ? and end_date <= ?", start_date.beginning_of_day, end_date.end_of_day)这应该包括从start_date到end_date的所有内容;-)希望它能有所帮助!
发布于 2011-03-07 09:28:03
假设表的详细信息和属性(包括日期),假设我想要两个特定日期的信息,比如从start_date到end_date。
因此,细节.(“日期在?和?",start_date,end_date)将给出所需的信息,包括start和end dates.Hope
https://stackoverflow.com/questions/5217589
复制相似问题