У меня есть таблица с одним из столбцов в виде даты в формате «ГГГГ -ММ -ДД». Могу ли я использовать 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?