Я использую 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
для моего сценария? - Есть ли лучший/более чистый способ указать время начала и окончания?