Hi Tom

You are correct that Sphinx treats dates and datetimes as UNIX timestamps. And 
you can have a manual SQL string for attributes... maybe the following?

  has "CAST(open_houses.start AS DATE)", :as => :house_start, :type => :datetime

You will probably need to pass in Datetimes to the filter, though... I wasn't 
sure how TS would handle Dates.

As for searching for two Sundays... no idea if this works, but you *could* try 
searching over 8 days (from the start of the first Sunday to the end of the 
second), and then have an excluding filter on the days inbetween...

  Property.search :with => {:house_start => (@first..(@last + 1.day))},
    :without => {:house_start => ((@first + 1.day)....@last)}

Or something like that... no promises if Sphinx likes it, though.

-- 
Pat

On 19/02/2010, at 9:09 AM, Tom Cocca wrote:

> Hi Pat,
> 
> Sorry it took me so long to get back to this to test it, I don't think I can 
> use Date.new as it tries to run .to_i or .to_f on whatever you are passing in 
> which means I either need to use Time or Datetime
> 
> The issue I see here is that the column open_houses.start is a datetime 
> column in mysql.   I only care about the date portion.
> 
> Sphinx stores dates and datetimes as unix timestamps it looks like.
> 
> So how do you search on the full day?  Like from 00:00:00 to 11:59:00 to 
> ensure that you get that value that is a datetime timestamp in the range.
> 
> Also, in addition to that, say I wanted to search on 2010-02-21 OR 2010-02-28 
> (two sundays) how can you do this query because I only want the two sundays 
> with no other dates, so I can't really do a range.  I would need 2 ranges I 
> think.
> 
> Or am I thinking about this all wrong?  
> 
> Is there any way to convert the datetime to a date before giving it to 
> sphinx?  
> 
> Can you do an indexes "CAST(open_houses.start as DATE)"  on a has_many 
> relationship?  Although that wouldn't allow me to use the :with arguments for 
> TS correct?  I would have to use conditions which doesn't allow for ranges or 
> arrays for conditions?  I could be wrong.
> 
> Thanks,
> ~ Tom
> 
> 
> On Thu, Feb 11, 2010 at 9:02 PM, Pat Allan <[email protected]> wrote:
> Hi Tom
> 
> I *think* (but it's worth examining the generated SQL in the conf file) that 
> multiple dates will become a MVA of timestamp integers.
> 
> So, using your index definition, to search on a couple of dates, you could 
> try the following:
> 
>  Property.search :with => {:open_house_date => [Date.new(2010, 2, 12), 
> Date.new(2010, 2, 13)]}
> 
> The only change you may need to make is to add .to_i to the end of those 
> dates, and hopefully that'll do the job. Let me know if I'm wrong :)
> 
> Cheers
> 
> --
> Pat
> 
> On 12/02/2010, at 1:53 AM, Tom Cocca wrote:
> 
> > I am looking to index a datetime column on a has_many relationship:
> >
> > class Property < ActiveRecord::Base
> >  has_many :open_houses
> > end
> >
> > The column I want to query on open_houses is :start
> > so In the property index I want to do something like:
> >    has open_houses(:start), :as => :open_house_date
> >
> > But when I query on that relationship I don't want to query as a
> > datetime only the date portion.
> >
> > So in SQL I used to do something like the following:
> >
> > oh_dates = ["2010-02-12", "2010-02-13"]
> > Property.find(:all, :conditions => ["CAST(open_houses.start as date)
> > IN (?)", oh_dates])
> >
> > How can I duplicate this w/ Thinking Sphinx?   Or does the conversion
> > from datetime to date no longer matter?
> >
> > Thanks,
> > ~ Tom
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Thinking Sphinx" 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/thinking-sphinx?hl=en.
> >
> 
> --
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" 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/thinking-sphinx?hl=en.
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" 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/thinking-sphinx?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" 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/thinking-sphinx?hl=en.

Reply via email to