Изпратете своя timestamp
стойност до date
ако искате прост синтаксис. Като това:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
Въпреки това, с големи маси това ще бъде по-бързо:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
Причина:втората заявка не трябва да трансформира всяка отделна стойност в таблицата и може да използва прост индекс в колоната с времеви печат. Изразът е sargable.
Забележката изключи горната граница (<
вместо <=
) за правилен избор.
Можете да компенсирате това, като създадете индекс на израз като този:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
Тогава първата версия на заявката ще бъде толкова бърза, колкото е възможно.