On 15 July 2010 20:09, Rob Biedenharn <[email protected]> wrote: > On Jul 15, 2010, at 1:17 PM, Philip Hallstrom wrote: >> >> On Jul 15, 2010, at 2:57 AM, Guo Yangguang wrote: >>> >>> hi >>> I want to build a filter that gets records from database based on >>> selected date.such as >>> #### >>> Product.find(:all, :conditions => ["created_at = ?",selected_date]) >>> #### >>> 1 If selected_date is a Date object while created_at is a DateTime >>> object,is it work? >>> 2 Do i need to set this? >> >> It will work just fine. However, it won't do what you want... created_at >> is going to contain date/time down to the second (or more). If you pass in >> a date of "2010-07-15" it's going to append a time of "00:00:00" (most >> likely). So you're not going to get records created anytime during that >> day. >> >> I'm guessing that's what you want. If so you need to modify that to check >> for any record created on that *date* using a range or something else. >> >>> #### >>> ActiveRecord::Base.default_timezone = :utc >>> #### >>> My talbe has another date type field which i want it to be local >>> timezone,so it seems i should not set >>> ActiveRecord::Base.default_timezone = :utc,but my filter will not works >>> well because of the default local timezone setting for the createdz_at >>> attribute.How to resolve these problem? >>> >>> Thanks! >>> -- > > > Try: > > Product.find(:all, :conditions => ["DATE(created_at) = ?", selected_date])
Will that have to do a calculation on every record to determine DATE? If so would it be more efficient to specify a range for created_at instead (something like >= selected_date and < selected_date + 1.day)? Particularly if there were an index on the column. Colin -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

