Schienen :order by Datum in Postgres Rücksendung der falschen Reihenfolge

Ich habe ein Modell namens Story, dass ich versuche, um durch die created_at Datum. Da hab ich gehostet, meine app auf Heroku, die verwendet Postgresql, habe ich Folgendes in mein controller:

@stories = Story.find( :all, :order => "DATE(created_at) DESC" , :limit => 11)

Ich würde erwarten, dass dieses zu geben, die erste 11 meiner Geschichten, geordnet nach dem Datum der Erstellung, mit der neuesten Geschichte erste.

Leider, das funktioniert nicht. Die meisten der Geschichten, die Rückkehr richtig sortiert, aber die ersten beiden sind gespiegelt. Das heißt, die neueste Geschichte erscheint der zweite in der Liste.

Warum würde das sein? Ich habe einen hinterhältigen Verdacht, dass meine Ergebnisse nicht bestellt oder bestellt auf der falschen Spalte (vielleicht id?) und, dass bis jetzt es passiert nur bestellt werden, wie ich erwartet, wenn angezeigt, auf meiner index-Seite. Wie kann ich es bestellen, wie ich es erwarten?

Falls es jemanden interessiert, der index-view ist die einfache Darstellung der Geschichten, in Ordnung. Das ist (HAML):

- @stories.each do |story|
  = render :partial => "event", :locals => { :event => story }

BEARBEITEN

Ich bin misstrauisch, dass die created_at ist eine datetime-Spalte und die DATE(...) Funktion von der Zeit Teil. So gibt es die Elemente geschaffen, die am selben Tag in einer zufälligen Reihenfolge. Da die ersten zwei Geschichten wurden erstellt, am selben Tag, aber mehrere Stunden auseinander, das würde erklären, warum Sie zu sein scheinen 'Umgekehrt'. Wenn dies der Fall ist, was wäre dann die richtige syntax order by Datum und Uhrzeit?

  • Beachten Sie auch, dass standardmäßig in einer PostgreSQL "null-Werte zu Sortieren, als ob der größer ist als alle nicht-null-Wert; das ist NULLS FIRST ist der Standard für DESC um, und NULLS LAST sonst." SQLite sortiert null-Werte als wenn Sie kleiner sind standardmäßig. Das könnte das problem sein, wenn Sie von einem zum anderen und Sie landen hier (wie mich). postgresql.org/docs/8.3/static/queries-order.html#QUERIES-ORDER
Schreibe einen Kommentar