-- time check CREATE TABLE timetmp (a time); \copy timetmp from 'data/time.data' SET enable_seqscan=on; SELECT count(*) FROM timetmp WHERE a < '10:57:11'; count ------- 251 (1 row) SELECT count(*) FROM timetmp WHERE a <= '10:57:11'; count ------- 252 (1 row) SELECT count(*) FROM timetmp WHERE a = '10:57:11'; count ------- 1 (1 row) SELECT count(*) FROM timetmp WHERE a >= '10:57:11'; count ------- 293 (1 row) SELECT count(*) FROM timetmp WHERE a > '10:57:11'; count ------- 292 (1 row) SELECT a, a <-> '10:57:11' FROM timetmp ORDER BY a <-> '10:57:11' LIMIT 3; a | ?column? ----------+----------------- 10:57:11 | @ 0 10:57:10 | @ 1 sec 10:55:32 | @ 1 min 39 secs (3 rows) CREATE INDEX timeidx ON timetmp USING gist ( a ); SET enable_seqscan=off; SELECT count(*) FROM timetmp WHERE a < '10:57:11'::time; count ------- 251 (1 row) SELECT count(*) FROM timetmp WHERE a <= '10:57:11'::time; count ------- 252 (1 row) SELECT count(*) FROM timetmp WHERE a = '10:57:11'::time; count ------- 1 (1 row) SELECT count(*) FROM timetmp WHERE a >= '10:57:11'::time; count ------- 293 (1 row) SELECT count(*) FROM timetmp WHERE a > '10:57:11'::time; count ------- 292 (1 row) EXPLAIN (COSTS OFF) SELECT a, a <-> '10:57:11' FROM timetmp ORDER BY a <-> '10:57:11' LIMIT 3; QUERY PLAN -------------------------------------------------------------- Limit -> Index Only Scan using timeidx on timetmp Order By: (a <-> '10:57:11'::time without time zone) (3 rows) SELECT a, a <-> '10:57:11' FROM timetmp ORDER BY a <-> '10:57:11' LIMIT 3; a | ?column? ----------+----------------- 10:57:11 | @ 0 10:57:10 | @ 1 sec 10:55:32 | @ 1 min 39 secs (3 rows)