Odešlete své timestamp
hodnotu do date
pokud chcete jednoduchou syntaxi. Takhle:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
U velkých stolů to však bude rychlejší:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Důvod:druhý dotaz nemusí transformovat každou jednotlivou hodnotu v tabulce a může využít jednoduchý index ve sloupci časového razítka. Výraz je sargable.
Poznámka vyloučila horní hranici (<
místo <=
) pro správný výběr.
To můžete vynahradit vytvořením indexu pro výraz, jako je tento:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Pak bude první verze dotazu tak rychlá, jak jen bude možné.