Как нацелиться на последний месяц в SQL-запросах - PullRequest
0 голосов
/ 29 октября 2019

Я использую этот код в SQL-запросе

WHERE [Date] >= DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE()))
  AND [Date] <= EOMONTH(DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE())));

Проблема наступила в 2020 году, и в декабрьском запросе возникнет ошибка

Отправленный мною код управляет датами, между которымиданные будут возвращены. Он просматривает дату запуска кода и выбирает этот день с прошлого месяца до конца прошлого месяца. Мне нужны даты с 1-го по последний день месяца, предшествующего тому, в котором этот код вызывается.

Я буду работать над этим вопросом завтра, будет интересно посмотреть, какие решения другие людиможно придумать.

Ответы [ 2 ]

2 голосов
/ 29 октября 2019

попробуйте

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0),
    DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) - 1 

, вы получите дату начала и окончания предыдущего месяца

0 голосов
/ 29 октября 2019

Если вы хотите предыдущий месяц:

where date >= dateadd(month, -1, datefromparts(year(getdate(), month(getdate(), 1))) and
      date < datefromparts(year(getdate(), month(getdate(), 1))

Это просто проверяет, что это до первого числа этого месяца, а затем вычитает месяц из этого.

...