选择表格条目,其中给定日期介于:开始日期和结束日期之间
问题描述:
我有一个对象具有开始日期和结束日期,以表示对象有效的时间。 给定一个日期,有没有办法只选择那些有效范围包含日期的对象?选择表格条目,其中给定日期介于:开始日期和结束日期之间
我试过摆弄之间,但无法获得正确的语法。
谢谢!
答
这是通过一个名为范围,做适当的限制,即确定哪些记录是在当前点可见的时间通常实现更加随心所欲日期:
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
答
这就是你如何使用活动记录来做到这一点。这可以改变使用占位为
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])
顺便说一句,这不是一个SQL的问题? – 2010-01-21 15:17:48