Trasmetti il tuo timestamp
valore a date
se vuoi una sintassi semplice. In questo modo:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Tuttavia, con tavoli grandi questo sarà più veloce:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Motivo:la seconda query non deve trasformare ogni singolo valore nella tabella e può utilizzare un semplice indice nella colonna timestamp. L'espressione è sargable.
Nota escluso il limite superiore (<
invece di <=
) per una selezione corretta.
Puoi rimediare creando un indice su un'espressione come questa:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Quindi la prima versione della query sarà la più veloce possibile.