SQL-запрос для получения записей, которые выпадают в последний день месяца
У меня есть таблица с записями из многих дат. Я хотел бы выполнить запрос, который возвращает только записи, которые попадают в последний день месяца месяца. Что-то вроде:
SELECT * FROM mytable
WHERE DATEPART(d, mytable.rdate) = DATEPART(d,DATEADD(m,1,DATEADD(d, -1, mytable.rdate)))
За исключением того, что это не работает какrdate
в правой части аргумента должен быть последний день его месяца дляdateadd
вернуть правильное сравнение.
В принципе, есть ли краткий способ сделать это сравнение? Эквивалент для четвертей также будет очень полезным, но, несомненно, более сложным.
РЕДАКТИРОВАТЬ:
По сути, я хочу проверить, является ли данная дата последней в любом месяце (или квартале), в который она попадает. Если это так, верните эту запись. Это может включать в себя некоторую функцию для возврата последнего дня месяца любой даты. напримерlastdayofmonth('2013-06-10') = 30
(поэтому эта запись не будет возвращена.
EDIT2:
В случае возврата записей, которые выпадают в последний день квартала, в котором они находятся, должно быть что-то вроде:
SELECT * FROM mytable
WHERE DATEPART('d', mytable.rdate) = lastdayofmonth(mytable.rdate)
AND DATEPART('m', mytable.rdate) = lastmonthofquarter(mytable.rdate);
Хитрый бит этоlastdayofmonth()
а такжеlastmonthofquarter()
функции