Другой вариант - использовать условие, которое потенциально может использовать индекс для этого столбца:
where date >= timestamp '2018-01-01 00:00:00'
and date < timestamp '2019-01-01 00:00:00';
Если вы не хотите писать длинный «литерал метки времени» и просто передавать число в запрос, вы можете использовать make_timestamp()
where date >= make_timestamp(2018,1,1,0,0,0)
and date < make_timestamp(2019,1,1,0,0,0);
Если это значение является параметром, вы можете использовать:
where date >= make_timestamp(?,1,1,0,0,0)
and date < make_timestamp(? + 1,1,1,0,0,0);
Функция извлечения также будет работать:
where extract(year from date)::int = 2018
или используя to_char ()
where to_char(date, 'yyyy') = '2018'