Sqlite distinct Datum


#1

Hallo,

ich würde gern aus einer Tabelle mit Publikationen nur die Jahreszahlen
herauzfiltern, in denen Publikationen erschienen sind. Die Tabelle steht
in
sqlite-Datenbank.

Ich habe das hier versucht:

Publication.find(:all, :select => “distinct
date(published_at,’%Y’)”)
=> [#]

Vielleicht kann mir ja jemand auf die Sprünge helfen.

Viele
Grüße
Michael K.


#2

Hallo Thomas,

aahhh, wieder was gelernt. Alles klar! Funktioniert!

Vielen Dank und viele
Grüße
Michael K.

Thomas Jachmann schrieb:


#3

Moin Michael,

die Funktion date() erwartet meines Wissens keinen Format-String. Sie
gibt das übergebene Datum einfach mit ‘%Y-%m-%d’ formatiert aus. Um
ein eigenes Format zu verwenden, nimmst Du besser strftime(). Dann
solltest Du Deinem Feld noch einen Namen geben, damit Du später
einfach darauf zugreifen kannst:

Publication.find(:all, : select => “distinct strftime(’%Y’,
published_at) as pa”).map(&:pa)

Das liefert Dir dann ein Array mit allen Jahreszahlen (als Strings).
Etwas unschön, da für jede Jahreszahl eine Publication instanziiert
wird, aber ansonsten müsste man direkt über die connection gehen und
das komplette SQL selbst zusammenbauen.

Gruß, Thomas

Am 27.01.2009 um 15:40 schrieb Michael K.: