Создать индекс Postgresql с date_trunc - PullRequest
0 голосов
/ 18 апреля 2019

Относительно этого вопроса . Я хочу создать индекс, который возвращает тот же вывод, что и этот запрос;

--takes 2005-10-12
select date_trunc('month',table_withdates.dateoftransfer::date)::Date
from table_withdates;
--returns 2005-10-01

Ниже будет индексироваться, но возвращается с отметкой времени, добавленной к дате, а это не то, что я хочу.

create index on table_withdates  (date_trunc('month', dateoftransfer::timestamp));
--returns 2005-10-01 00:00:00

Можно ли создать индекс, который возвращает дату в этом формате без отметки времени

1 Ответ

1 голос
/ 18 апреля 2019

Цитата из руководства

Возвращаемое значение имеет тип отметки времени или интервала со всеми полями, которые менее значимы, чем выбранное, установленное в ноль

Таким образом, вам нужно привести результат date_trunc к дате:

create index on table_withdates  (date_trunc('month', dateoftransfer)::date);

Обратите внимание, что для того, чтобы индекс можно было использовать для запроса, вам нужно использовать точно такое же выражение,например:

where date_trunc('month', dateoftransfer)::date  = ...
...