# Rails find Conditions

**URL:** <https://www.ruby-forum.com/t/rails-find-conditions/89899>\
**Category:** Rails\
**Created:** [March 23, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/rails-find-conditions/89899 "2007-03-23T16:30:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@mick](https://www.ruby-forum.com/u/mick)\
**Post date:** [March 23, 2007, 4:30pm UTC](https://www.ruby-forum.com/t/rails-find-conditions/89899/1 "2007-03-23T16:30:23Z")

</div>

Hi, I am trying to return all the records in my table for which a date  
comparison reveals that that date is within 7 days. The code I have  
written looks like this:

@subscriptions = find(:all, :conditions =\> [‘subscriptions.user\_id = ?  
AND subscriptions.confirmed = 1 AND (DATEDIFF(day,now(),events.start\_on)  
\< 7)’,user\_id], :joins =\> “INNER JOIN events on subscriptions.event\_id =  
events.id”)

However it throws a nasty SQL error and no matter what I do I can’t seem  
to resolve it.

FYI the error is this:

Mysql::Error: #42000You have an error in your SQL syntax; check the  
manual that corresponds to your MySQL server version for the right  
syntax to use near ‘:day,now(),events.start\_on) \< 7))’ at line 1: SELECT

- FROM subscriptions INNER JOIN events on subscriptions.event\_id =  
events.id WHERE (subscriptions.user\_id = 1 AND subscriptions.confirmed =  
1 AND (DATEDIFF(:day,now(),events.start\_on) \< 7))

Can anyone give me any clues?!

Much appreciated,

Mick

---

<div class="post-metadata">

**Author:** ![mick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@mick](https://www.ruby-forum.com/u/mick)\
**Post date:** [March 23, 2007, 6:01pm UTC](https://www.ruby-forum.com/t/rails-find-conditions/89899/2 "2007-03-23T18:01:51Z")

</div>

> Hi, I am trying to return all the records in my table for which a date  
> comparison reveals that that date is within 7 days. The code I have  
> written looks like this:
> 
> @subscriptions = find(:all, :conditions =\> [‘subscriptions.user\_id = ?  
> AND subscriptions.confirmed = 1 AND (DATEDIFF(day,now(),events.start\_on)  
> \< 7)’,user\_id], :joins =\> “INNER JOIN events on subscriptions.event\_id =  
> events.id”)

@subscriptions = find(:all,  
:conditions =\> [‘subscriptions.user\_id = ? AND subscriptions.confirmed =  
1  
AND events.start\_on \>= ?’, user\_id, 7.days.ago.at\_beginning\_of\_day],  
:joins =\> “INNER JOIN events on subscriptions.event\_id = events.id”)

-philip

---

<div class="post-metadata">

**Author:** ![mick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@mick](https://www.ruby-forum.com/u/mick)\
**Post date:** [March 26, 2007, 3:53pm UTC](https://www.ruby-forum.com/t/rails-find-conditions/89899/3 "2007-03-26T15:53:50Z")

</div>

Hi Philip, sorry for the late reply - that code works a treat!

Thanks for your help,

Mick
