Как узнать, находятся ли данные в текущем месяце SQL Server?
У меня есть столбец Ticket_Date
который находится в формате YYYY-MM-DD HH:MI:SS
Я хочу проверить, находится ли Ticket_date
в текущем месяце.
Пока у меня есть:
- SQL Date Compare, используя только Date not Time
- Как получить возрастный расчет за разные годы
- SQL SERVER: получение общих дней между двумя датами
- Расчет количества проработанных дней, исключая праздники
- Групповые даты на 7 дней без учета конкретных дат
Ticket_date >= '2015-04-01' and Ticket_date < '2015-04-30'
но мне нужно, чтобы он работал с текущим месяцем, а не с жестким кодом
- Запросы преобразования даты в формате SQL
- даты фильтрации
- Создание даты с недели месяца и дня недели на SQL-сервере
- T-SQL Как выбрать ближайшую дату
- Порядок подсчета перекрывающихся диапазонов дат в SQL
- Как преобразовать значения даты в SAS в обычные даты с использованием SSIS
- Отображать текущие значения месяца на основе аббревиатуры (октябрь) SQL Server
- Ошибка конвертации даты .: yyyy / MM / dd to dd / MM / yyyy
YEAR(Ticket_date) = YEAR(getdate()) and MONTH(Ticket_date) = MONTH(getdate())
но я бы также сохранил текущую дату в переменной, чтобы гарантировать, какой результат getdate()
не изменяется при выполнении длинного запроса в полночь
declare @today datetime = getdate() ... YEAR(Ticket_date) = YEAR(@today) and MONTH(Ticket_date) = MONTH(@today)
Как насчет этого?
where ticket_date >= cast(getdate() - day(getdate) + 1 as date) and ticket_date < dateadd(month, 1, cast(getdate() - day(getdate) + 1 as date) )
Эта формулировка не имеет функций в ticket_date
, поэтому SQL Server может использовать индекс в столбце, если это необходимо.
MONTH(Ticket_date) = MONTH(GETDATE()) AND YEAR(Ticket_date) = YEAR(GETDATE())