Функция SQL Server EOMONTH

В этом уроке вы узнаете, как использовать функцию SQL Serer EOMONTH() для получения последнего дня месяца указанной даты.

Обзор SQL Server EOMONTH()

Функция EOMONTH() возвращает последний день месяца указанной даты с необязательным смещением.

Ниже показан синтаксис функции EOMONTH():

EOMONTH(start_date [, offset] );

Функция EOMONTH() принимает два аргумента:

  • start_date — это выражение даты, которое вычисляется как дата. Функция EOMONTH() возвращает последний день месяца для этой даты.
  • offset — это целое число, указывающее количество месяцев, которое необходимо добавить к start_date.

Если в результате сложения offset и start_date получается недействительная дата, функция EOMONTH() выдаст ошибку.

Примеры SQL Server EOMONTH()

Давайте рассмотрим несколько примеров использования функции EOMONTH().

A) Использование функции EOMONTH() для даты

В этом примере функция EOMONTH() используется для возврата последнего дня месяца для даты 2019-02-15:

SELECT 
    EOMONTH('2019-02-15') end_of_month_feb2019;

Вот что получилось:

end_of_month_feb2019
--------------------
2019-02-28
(1 row affected)

Если передать функцию EOMONTH() дату високосного года, она все равно вернет правильный результат:

SELECT
    EOMONTH('2020-02-09') end_of_month_feb2020;

Вывод:

end_of_month_feb2020
--------------------
2020-02-29
(1 row affected)

Как ясно видно из выходных данных, последний день февраля 2020 года — 29-е, а не 28-е число.

Б) Использование функции EOMONTH() для получения количества дней в указанном месяце

Чтобы узнать количество дней в указанном месяце, выполните следующие действия:

  • Сначала используйте функцию EOMONTH(), чтобы получить последний день месяца.
  • Затем передайте последний день месяца в функцию DAY().

В этом примере возвращается количество дней в феврале 2018 года:

SELECT 
    DAY(EOMONTH('2020-02-09')) days;

Вот что получилось:

days
-----------
29

Чтобы получить количество дней в текущем месяце, используйте следующий оператор:

SELECT 
    DAY(EOMONTH(GETDATE()));

C) Пример использования EOMONTH() со смещением

В следующем примере используется функция EOMONTH() со смещением в 2 месяца:

SELECT 
    EOMONTH('2019-02-15', 2) eomonth_next_2_months;

Вывод следующий:

eomonth_next_2_months
---------------------
2019-04-30
(1 row affected)

В этом руководстве вы узнали, как использовать функцию SQL Server EOMONTH() для получения последнего дня месяца указанной даты.

Мирослав С.

Автор статей, ИБ-специалист