Ich habe ein Modell namens Story
, dass ich versuche, durch die created_at
Datum zu bestellen. Da ich meine App auf Heroku gehostet haben, die Postgresql verwendet, ich habe folgende in meinem Controller:Schienen: Reihenfolge nach Datum in Postgres falsche Bestellung zurück
@stories = Story.find(:all, :order => "DATE(created_at) DESC" , :limit => 11)
würde ich erwarten, dass dies die ersten 11 meiner Geschichten zu geben, nach dem Erstellungsdatum geordnet, mit der neueste Geschichte zuerst.
Leider funktioniert das nicht. Die meisten Geschichten kehren korrekt zurück, aber die ersten beiden sind umgedreht. Das heißt, die neueste Geschichte erscheint an zweiter Stelle in der Liste.
Warum sollte das sein? Ich habe den hinterhältigen Verdacht, dass meine Ergebnisse überhaupt nicht geordnet sind oder in der falschen Spalte (vielleicht id?) Bestellt werden, und dass es bis jetzt zufällig so bestellt wurde, wie ich es erwartet hatte, wenn es auf meiner Indexseite angezeigt wurde. Wie kann ich es bestellen, wie ich es erwarte?
Falls jemand interessiert ist, zeigt die Indexansicht einfach die Storys in der richtigen Reihenfolge an. Das heißt (HAML):
- @stories.each do |story|
= render :partial => "event", :locals => { :event => story }
EDIT
Ich bin verdächtig, dass die created_at
eine Datumzeit-Spalte und die Funktion DATE(...)
ignoriert den Zeitabschnitt. Daher werden die am selben Datum erstellten Elemente in zufälliger Reihenfolge zurückgegeben. Da die ersten beiden Geschichten am selben Tag entstanden sind, aber mehrere Stunden auseinander liegen, würde das erklären, warum sie "umgedreht" zu sein scheinen. Wenn dies der Fall ist, was wäre die richtige Syntax, um nach Datum und Uhrzeit zu sortieren?
Das hat den Trick gemacht. Vielen Dank. –