Можем использовать оператор
BETWEEN, в результате чего получим выборку с 20 по 30 мая включительно. ❗️Запрос с
BETWEEN идентичен операторам сравнения >= и <=. Итак, наш запрос:
SELECT doctor_id, app_dateFROM doctors WHERE app_date BETWEEN ‘20.05.2024’ AND ‘30.05.2024’По факту мы получим список до 29.05 включительно, записей 30.05.2024 не будет, т.к. SQL воспринимает дату ‘30.05.2024’ как ‘30.05.2024 00:00:00’.
Что делать?
Есть несколько способов обойти этот момент, всё зависит от того, что мы хотим получить:
▫️можно указать ‘30-05-2024 23:59:59’ - и это уже другой тип данных
▫️можно указать 31.05.2024, но указание даты вручную чревато тем, что можно ошибиться, особенно когда речь идет о 28.02.2024, т.к. здесь следующий день будет 29.02.2024, а вот в 2025 году - 01.03.2025
▫️воспользоваться командой
INTERVAL, которая позволяет прибавлять к дате и отнимать от нее определенные промежутки времени. В нашем случае добавляем интервал один день, вот как это будет выглядеть SELECT doctor_id, app_dateFROM doctors WHERE app_date BETWEEN ‘20.05.2024’ AND ‘30.05.2024’::date + INTERVAL ‘1 day’Примечание: после команды
INTERVAL можно указывать не только день, месяц, год, но и сразу месяц+день, год+месяц, часы+секунды и т.д. Например, указываем, что хотим часы и секунды (
HOUR_SECOND), а перед этим в кавычках пишем сначала значение для часов, а потом для секунд. Это выглядит так: INTERVAL ‘5-30’ HOUR_SECOND.