pete
March 6, 2008, 5:46pm
1
Hi-
Say I am returning some collection of DateTime items and I only want
to compare the month. Is there a way to do this directly in the find?
Something like this…
@coll = Collection.find(:all, :conditions => [“date.month
= ?”,Time.now.lat_month])
Thanks!
pete
March 6, 2008, 5:51pm
3
Say I am returning some collection of DateTime items and I only want
to compare the month. Is there a way to do this directly in the find?
Something like this…
@coll = Collection.find(:all, :conditions => [“date.month
= ?”,Time.now.lat_month])
Well, if it’s mysql you could do this:
:conditions => [“MONTH(date.month) = MONTH(?)”, Time.now.last_month]
Note this will pull up every date with february as the month
regardless
of the year, not just feb 08.
May lose some database independence, but it will work. Just looks up
the
method for your particular database.
You could also change it to look for a date BETWEEN this AND that which
all Db’s support.
-philip
pete
March 6, 2008, 6:43pm
4
I like the range, so for simplicity, I did this:
beginLastMonth = Time.now.last_month.beginning_of_month
endLastMonth = Time.now.last_month.at_end_of_month
@col = Collection.find(:all, :conditions => [“start_time >= ? and
start_time <= ?”,beginLastMonth,endLastMonth])
pete
March 6, 2008, 6:47pm
5
Just for my own style I’d have done:
beginLastMonth = Time.now.last_month.beginning_of_month
endLastMonth = beginLastMonth.at_end_of_month
Not only does it avoid figuring out last_month a second time, but in
that tiny fraction of a second between the two lines the month could
change and then you have a two month range.
-Rob
Rob B. http://agileconsultingllc.com
[email protected]