Cast dit timestamp
værdi til date
hvis du vil have simpel syntaks. Sådan:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Men med store borde vil dette være hurtigere:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Årsag:den anden forespørgsel behøver ikke at transformere hver enkelt værdi i tabellen og kan bruge et simpelt indeks på tidsstempelkolonnen. Udtrykket er sargerbart.
Note ekskluderede den øvre grænse (<
i stedet for <=
) for et korrekt valg.
Du kan kompensere for det ved at oprette et indeks på et udtryk som dette:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Så vil den første version af forespørgslen være så hurtig, som den bliver.