Метод 1: использование функции GETDATE()
SELECT *
FROM YourTableName
WHERE YourDateColumn >= CONVERT(DATE, CONVERT(VARCHAR(6), YEAR(GETDATE()) * 100 + MONTH(GETDATE())) + '01', 112)
AND YourDateColumn <= GETDATE()
Этот метод использует функцию GETDATE() для получения текущей даты и времени. Затем он извлекает компоненты года и месяца и преобразует их в формат «ггггмм». Наконец, он создает диапазон дат, сравнивая столбец YourDateColumn в YourTableName с началом месяца и текущей датой.
Метод 2: использование функции DATEFROMPARTS() (SQL Server 2012 и более поздние версии)
SELECT *
FROM YourTableName
WHERE YourDateColumn >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)
AND YourDateColumn <= GETDATE()
Этот метод использует функцию DATEFROMPARTS(), представленную в SQL Server 2012. Он берет текущий год и месяц из GETDATE() и создает начало месяца. Затем YourDateColumn сравнивается с этим диапазоном дат для получения нужных данных.
Метод 3: использование функции FORMAT() (SQL Server 2012 и более поздние версии)
SELECT *
FROM YourTableName
WHERE YourDateColumn >= CONVERT(DATE, FORMAT(GETDATE(), 'yyyyMM') + '01')
AND YourDateColumn <= GETDATE()
Этот метод использует функцию FORMAT(), представленную в SQL Server 2012, для форматирования текущей даты в формате «ггггММ» (год и месяц). Результат объединяется с «01», образуя начало месяца. Затем YourDateColumn сравнивается с этим диапазоном дат.