Postgres where-Klausel vergleicht Zeitstempel

77

Ich habe eine Tabelle, in der die Spalte vom Datentyp ist timestamp

Welche Datensätze mehrere Datensätze für einen Tag enthält Ich möchte alle Zeilen auswählen, die dem Tag entsprechen

Wie mache ich es?

ein Pferd ohne Name
quelle
1
Es gibt keinen datetimeTyp in Postgres. Es gibt timestampmit und ohne Zeitzone.
Ypercubeᵀᴹ

Antworten:

133

Angenommen, Sie meinen tatsächlich, timestampweil es datetimein Postgres keine gibt

Verwandeln Sie die Zeitstempelspalte in ein Datum, das den Zeitteil entfernt:

select *
from the_table
where the_timestamp_column::date = date '2015-07-15';

Dies gibt alle Zeilen ab dem 15. Juli zurück.

Beachten Sie, dass oben kein Index verwendet wird the_timestamp_column. Wenn die Leistung kritisch ist, müssen Sie entweder einen Index für diesen Ausdruck erstellen oder eine Bereichsbedingung verwenden:

select *
from the_table
where the_timestamp_column >= timestamp '2015-07-15 00:00:00'
  and the_timestamp_column < timestamp '2015-07-16 00:00:00';
ein Pferd ohne Name
quelle
1
Ich wünschte, ich hätte den zweiten Teil gelesen, bevor ich die erste Stilabfrage an einen großen Tisch geschickt hätte ...
Palace Chan