PostgreSQL: работа с датой
Есть запрос:
select * from people
where date_birthday between '1982-01-10' and '1987-01-10';
Встал вопрос как его модифицировать и сделать универсальным если дата будет в формате dd-mm-yyyy, пытаюсь сделать через функцию to_char, т.е.:
select * from people
where date_birthday
between
(to_char(date_birthday ,'DD-MM-YYYY') = '1982-01-10')
and
(to_char(date_birthday ,'DD-MM-YYYY') = '1987-01-10');
Но в результате получаю пустой набор. В чем моя ошибка и какую лучше функцию для работы с датой в данной ситуации нужно использовать?
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Лучше переведите текст в таймстампы, так как сравнение строк медленнее, будет производиться для каждой даты в таблице, и зависит от локали:
SELECT *
FROM people
WHERE date_birthday
BETWEEN to_timestamp('10-01-1982', 'DD-MM-YYYY')
AND to_timestamp('10-01-1987', 'DD-MM-YYYY')
;