SQL Server: разные способы получить последний день месяца

В SQL Server существует несколько способов получения последнего дня месяца. В этой статье будут рассмотрены различные методы с примерами кода, которые помогут вам получить последний день месяца с помощью запросов T-SQL. Независимо от того, работаете ли вы с SQL Server Management Studio или интегрируете SQL-запросы в свои приложения, понимание этих методов улучшит ваши навыки программирования баз данных.

Методы получения последнего дня месяца:

Метод 1: использование функции EOMONTH()
Функция EOMONTH() — это встроенная функция, представленная в SQL Server 2012. Она возвращает последний день месяца для заданного значения даты, что делает ее простой и удобный способ.

SELECT EOMONTH(GETDATE()) AS LastDayOfMonth;

Метод 2: использование функций DATEADD() и DATEDIFF().
Этот метод предполагает использование функции DATEADD() для добавления одного месяца к входной дате, а затем вычитания одного дня с помощью функции DATEDIFF().

Метод 2. Использование функций DATEADD() и DATEDIFF().
Этот метод предполагает использование функции DATEADD() для добавления одного месяца к входной дате, а затем вычитания одного дня с помощью функции DATEDIFF().

Метод 2. Использование функций DATEADD() и DATEDIFF(). >

SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)) AS LastDayOfMonth;

Метод 3: использование функции ДЕНЬ() с DATEADD() и DATEDIFF()
В этом подходе мы используем функцию ДЕНЬ() для извлечения компонента дня из входной даты, а затем вычитаем это количество дней. с даты ввода.

SELECT DATEADD(DAY, -DAY(GETDATE()), DATEADD(MONTH, 1, GETDATE())) AS LastDayOfMonth;

Метод 4: использование функции DATEFROMPARTS()
Функция DATEFROMPARTS() позволяет нам построить дату, используя отдельные компоненты, такие как год, месяц и день. Указав год и месяц и установив день равным 1, мы можем получить первый день следующего месяца и вычесть один день.

SELECT DATEADD(DAY, -1, DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()) + 1, 1)) AS LastDayOfMonth;

Метод 5: использование функций DATEADD() и DATEDIFF() с DAY() и MONTH()
Этот метод включает в себя извлечение компонента месяца из входной даты с помощью функции MONTH() и добавление его к нему. Затем мы используем функцию ДЕНЬ(), чтобы определить количество дней, которые необходимо вычесть.

SELECT DATEADD(DAY, -DAY(DATEADD(MONTH, 1, GETDATE())), DATEADD(MONTH, 1, GETDATE())) AS LastDayOfMonth;