Postgresql выбирает диапазон месяцев

У меня есть таблица с одним из столбцов в виде даты в формате «ГГГГ -ММ -ДД». Могу ли я использовать select для получения всех данных в месячном диапазоне? Скажем, мне нужны все данные с 2012 -01 -xx по 2013 -04 -xx. Поэтому я в основном ищу SQL-запрос, подобный приведенному ниже :

SELECT * FROM table WHERE date IN BETWEEN '2012-01' AND '2013-04' (INVALID QUERY)

. Поскольку каждый месяц начинается с «01», я могу изменить приведенный выше запрос, чтобы настроить условие запуска.

SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND '2013-04' (INVALID QUERY)

Теперь проблема приходит с конечной датой. Я должен вручную рассчитать последнюю дату для данного месяца, принимая во внимание все факторы, такие как продолжительность месяца, високосный год и т. д., поскольку запрос завершается ошибкой, если данная дата недействительна. Итак, в настоящее время я делаю что-то вроде этого:

SELECT * FROM table WHERE date IN BETWEEN '2012-01-01' AND 'VALID_MONTH_END_DATE' (VALID Query)

Я хочу знать, есть ли способ избежать этого действительного расчета даты окончания?

Уточнение

Я думал выше о первом дне следующего месяца, но даже тогда мне придется применить некоторую логику, скажем, если это декабрь, то следующий месяц будет январем следующего года. Я хотел знать, возможно ли решение только для SQL?

7
задан Vipin Parakkat 2 July 2012 в 00:29
поделиться