Cast je timestamp
waarde tot date
als u een eenvoudige syntaxis wilt. Zoals dit:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Met grote tafels gaat dit echter sneller:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Reden:de tweede query hoeft niet elke afzonderlijke waarde in de tabel te transformeren en kan een eenvoudige index op de tijdstempelkolom gebruiken. De uitdrukking is sargable.
Opmerking sluit de bovengrens uit (<
in plaats van <=
) voor een juiste selectie.
Dat kun je goedmaken door een index te maken op een uitdrukking als deze:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Dan zal de eerste versie van de query zo snel mogelijk zijn.