タイムスタンプ
をキャストします 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';
理由:2番目のクエリは、テーブル内のすべての値を変換する必要はなく、タイムスタンプ列の単純なインデックスを利用できます。式は仮可能です。
上限を除外していることに注意してください( <
<=
の代わりに )正しい選択のために。
次のような式にインデックスを作成することで、それを補うことができます:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
そうすれば、クエリの最初のバージョンは可能な限り高速になります。