我有一個對象具有開始日期和結束日期,以表示對象有效的時間。 給定一個日期,有沒有辦法只選擇那些有效範圍包含日期的對象?選擇表格條目,其中給定日期介於:開始日期和結束日期之間
我試過擺弄之間,但無法獲得正確的語法。
謝謝!
我有一個對象具有開始日期和結束日期,以表示對象有效的時間。 給定一個日期,有沒有辦法只選擇那些有效範圍包含日期的對象?選擇表格條目,其中給定日期介於:開始日期和結束日期之間
我試過擺弄之間,但無法獲得正確的語法。
謝謝!
這是通過一個名爲範圍,做適當的限制,即確定哪些記錄是在當前點可見的時間通常實現更加隨心所欲日期:
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