选择表格条目,其中给定日期介于:开始日期和结束日期之间

问题描述:

我有一个对象具有开始日期和结束日期,以表示对象有效的时间。 给定一个日期,有没有办法只选择那些有效范围包含日期的对象?选择表格条目,其中给定日期介于:开始日期和结束日期之间

我试过摆弄之间,但无法获得正确的语法。

谢谢!

这是通过一个名为范围,做适当的限制,即确定哪些记录是在当前点可见的时间通常实现更加随心所欲日期:

class MyRecord < ActiveRecord::Base 
    named_scope :visible_at, lambda { |date| { 
    :conditions => [ 
     'visible_from<=? AND visible_to>=?', 
     date, date 
    ] 
    }} 
end 

想必您日期存储为UTC,因为它是一个相当大的滋扰从一个本地时间转换到另一个的目的显示。

您可以选择所有可见的模型是这样的:

@records = MyRecord.visible.all 
@records = MyRecord.visible_at(2.weeks.from_now) 

如果您对“given_date”执行此操作。

select * 
from table 
where start_date <= given_date 
and end_date >= given_date 
+0

顺便说一句,这不是一个SQL的问题? – 2010-01-21 15:17:48

这就是你如何使用活动记录来做到这一点。这可以改变使用占位为

class MyRecord < ActiveRecord::Base 
    named_scope :visible, 
    :conditions => 'visible_from<=UTC_TIMESTAMP() AND visible_to>=UTC_TIMESTAMP' 
end 

Foo.find(:all, :conditions => ['valid_from <= ? and valid_to >= ?', valid_date, valid_date])