Я использую PostgreSQL 9.6, и у меня есть таблица с именем decks
со столбцом expiration
типа timestamp with time zone
(для хранения колод карт, где каждая карта может истечь независимо).
Я бы хотел создать ночное задание cron, которое находит все карты, срок действия которых истек в любой момент предыдущего дня, т.е. с 0:00 до 23:59 включительно.
Это, кажется, дает мне временной диапазон, который я хочу ...
SELECT id
FROM decks
WHERE expiration >= (now()::date - 1)::timestamptz
AND expiration < (now()::date)::timestamptz;
... но мне интересно две вещи:
- Как лучше всего проиндексировать столбец
expiration
для моего сценария?
- Есть ли лучший / более чистый способ указать время начала и окончания?