Jak zdefiniować zapytanie do SQLa, tak, żeby znalazł mi wszystkie wpisy, ale z datą większą niż dziś.
@events = Event.find(:all, :order => "date ASC", :conditions => "date > #{Time.now}")
nie działa
Jak zdefiniować zapytanie do SQLa, tak, żeby znalazł mi wszystkie wpisy, ale z datą większą niż dziś.
@events = Event.find(:all, :order => "date ASC", :conditions => "date > #{Time.now}")
nie działa
Spróbuj
@events = Event.find(:all, :conditions=>['date > ?', Time.now.to_date])
Samo Time.now zwraca cos takiego:
Fri Jun 02 17:58:55 BST 2006
Jesli twoja kolumna w bazie Mysql to date to oczekuje ona formatu YYYY-MM-DD.
Poza tym, staraj sie zawsze przekazywac paramatery do zapytania przez ?, to zapobiega SQL injection.
Dzięki. Akurat tu chyba nie trzeba stosować [‘date > ?’, Time.now.to_date] bo to nie są dane pochodzące z zewnętrznego formularza.
mineło 10 minut…
Jednak nie działa. Przy takim warunku pokazuje mi wszystkie rekordy z tabeli. Nawet te zawierające datę 2000r.
a zerknij no do loga, jak wyglada zapytanie SQL. jak to nic nie pomoze, to podrzuc tu na forum to zapytanie. pewnie format daty jest jednak inny niz oczekuje baza.
Zapytanie wydaje się być poprawne. Jeśli zmienie nierówność na date < Time.now.to_date nie zwraca żadnego wyniku. Baza to MySQL 4.1
SELECT * FROM events WHERE (date > 2006-06-04) ORDER BY date ASC
[quote=owiecc]Zapytanie wydaje się być poprawne. Jeśli zmienie nierówność na date < Time.now.to_date nie zwraca żadnego wyniku. Baza to MySQL 4.1
SELECT * FROM events WHERE (date > 2006-06-04) ORDER BY date ASC
[/quote]
nie jest poprawne. data powinna byc w apostrofach. tak to w SQL sa po prostu 2 odejmowania (-:
Super, działa.
@events = Event.find(:all, :order => "date ASC", :conditions => "date > \"#{Time.now.to_date}\"")
[quote=owiecc]Super, działa.
@events = Event.find(:all, :order => "date ASC", :conditions => "date > \"#{Time.now.to_date}\"")
[/quote]
ladniej bedzie tak:
@events = Event.find(:all, :order => 'date ASC', :conditions => %Q{date > "#{Time.now.to_date}"})
przepraszam, nie mogłem sie powstrzymać
a jak od bierzacej daty odjac tydzien ?
Odjecie tygodnia:
1.week.ago
dodanie tygodnia:
1.week.from_now
Ladnie, prawda?
[quote=hosiawak]Spróbuj
@events = Event.find(:all, :conditions=>['date > ?', Time.now.to_date])
[/quote]
Kolega forumowicz tez dobrze podal.
Uzycie ? zamyka takze apostrofami.
Tak, wiec
['date > ?', Time.now.to_date]
da nam poprawnie zamknieta date
date > '2006-06-04'