Функция EOMONTH |
||||||||||||||
Как узнать последний день месяца по заданной дате, например, текущего месяца? Текущую дату мы можем узнать, используя встроенную функцию current_timestamp: Чтобы узнать последний день предыдущего месяца, мы можем от текущей даты отнять номер текущего дня месяца, т.е. количество дней, прошедших от начала месяца:
Тогда для текущего месяца нам потребуется предварительно добавить один месяц к текущей дате:
Уберем, наконец, из полученного результата компоненту времени:
В Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server 2012 появилась функция EOMONTH, которая позволяет сделать то же самое без применения "процедурной" логики:
Если вы получаете ошибку при выполнении последнего запроса, значит учебник еще не переехал на версию SQL Server, поддерживающую EOMONTH. Ну, а для времени, когда я написал этот запрос, результаты, естественно, совпали:
Мы уже знаем, что функция EOMONTH имеет аргументом выражение типа даты. Кроме того, функция имеет также второй (необязательный) целочисленный аргумент, представляющий число месяцев, которые, при наличии, будут добавлены к дате, представленной первым аргументом. Например, следующий запрос даст нам последние дни предыдущего, текущего и следующего месяца для даты '2016-01-28':
|