Django - erhalte eindeutige Daten vom Zeitstempel

8

Ich versuche, Benutzer nach Datum zu filtern, kann aber nicht, bis ich das erste und letzte Datum der Benutzer in der Datenbank finden kann. Während ich später mit meinem Skript die Tüpfelchen herausfiltern kann, möchte ich es von Anfang an mit Djangos distinct machen, da es deutlich reduziert wird. Ich habe es versucht

%Vor%

aber da install_time ein timestamp ist, enthält es das Datum UND die Zeit (was mir eigentlich egal ist). Daher sind die einzigen Daten, die herausgefiltert werden, Daten, bei denen wir die Installationsdaten mehrerer Benutzer abrufen können, nicht jedoch die Zeiten .

Irgendeine Idee, wie man das macht? Ich verwende dies mit Django 1.3.1, Postgres 9.0.5 und der neuesten Version von psycopg2.

BEARBEITEN: Ich habe vergessen, den Datentyp von install_time :

hinzuzufügen %Vor%

BEARBEITEN 2: Hier ist eine Beispielausgabe von der Postgres-Shell, zusammen mit einer kurzen Erklärung dessen, was ich will:

%Vor%

Ich kenne Manager.raw , würde aber lieber django.db.connection.cursor verwenden, um die Abfrage direkt zu schreiben, da Manager.raw eine RawQuerySet zurückgibt, was IMO schlimmer ist, als die SQL-Abfrage manuell zu schreiben und zu wiederholen.

    
Edwin 21.12.2011, 21:49
quelle

2 Antworten

7

Wenn Berichte in größeren Datasets erstellt werden, ist itertools.group_by möglicherweise zu langsam. In diesen Fällen mache ich Postgres die Gruppierung:

%Vor%     
tback 21.12.2011, 23:58
quelle
0

Ich habe beschlossen, das zu schließen, da es eine Art diese Frage ist Hier ist die Antwort, wenn Sie den Link nicht mit freundlicher Genehmigung von nosklo aufrufen möchten.

Erstellen Sie eine kleine Funktion, um nur das Datum zu extrahieren:    def extract_date (Einheit):        'Extrahiert das Startdatum von einer Entität'         Rückgabe entity.start_time.date ()

Dann können Sie es mit itertools.groupby verwenden:

%Vor%     
Edwin 21.12.2011 23:02
quelle

Tags und Links