Übertragen Sie Ihren timestamp
Wert bis date
wenn Sie eine einfache Syntax wünschen. So:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Bei großen Tabellen geht dies jedoch schneller:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Grund:Die zweite Abfrage muss nicht jeden einzelnen Wert in der Tabelle transformieren und kann einen einfachen Index für die Timestamp-Spalte verwenden. Der Ausdruck ist sargable.
Beachten Sie, dass die Obergrenze ausgeschlossen ist (<
statt <=
) für eine korrekte Auswahl.
Sie können dies ausgleichen, indem Sie einen Index für einen Ausdruck wie diesen erstellen:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Dann wird die erste Version der Abfrage so schnell wie möglich sein.