Envía tu timestamp
valor hasta date
si quieres una sintaxis simple. Así:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Sin embargo, con tablas grandes esto será más rápido:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Motivo:la segunda consulta no tiene que transformar todos los valores de la tabla y puede utilizar un índice simple en la columna de marca de tiempo. La expresión es sargable.
Tenga en cuenta que excluyó el límite superior (<
en lugar de <=
) para una selección correcta.
Puede compensar eso creando un índice en una expresión como esta:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Luego, la primera versión de la consulta será lo más rápida posible.