Получить данные за последний месяц в SQL Server - PullRequest
0 голосов
/ 27 апреля 2018

Я проверил Получить записи прошлого месяца на сервере SQL , и это не сработало!

Я пытаюсь получить записи за последний месяц, основываясь на моей таблице базы данных и столбце issue_date.

Что такое SQL-запрос для этого?

Для пояснения, сегодня (27 апреля-18) я хочу получить все записи с 18 марта.

У меня есть date_date в формате, который я конвертирую в дату, но приведенный ниже код дает мне все записи с 01 марта 2018 года и до сегодняшнего дня.

DATEPART(month, CONVERT (VARCHAR(11),DATEADD(day,wo_header.issue_date,`1971/12/31`),106)) = DATEPART(month, DATEADD(month, -1, getdate()))

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Возможно, самый простой способ - eomonth(). Если на issuedate нет компонента времени:

where issuedate > eomonth(getdate(), -2) and
      issuedate <= eomonth(getdate(), -1)

Если есть компонент времени:

where issuedate >= dateadd(day, 1, cast(eomonth(getdate(), -2) as date)) and
      issuedate < dateadd(day, 1, cast(eomonth(getdate(), -1) as date))

Без эомонта я бы сделал:

где выдано = dateadd (месяц, -1, приведение (dateadd (день, 1 - день (getdate ()), getdate ()) в качестве даты))

0 голосов
/ 30 апреля 2018

Код, который я понял, не очень хорош, но работает. Сначала добавляется дополнительный столбец с номером месяца к части SELECT моего кода:

Month(CONVERT (VARCHAR(11),DATEADD(day,wo_header.closing_date,'1971/12/31'),106))  As Month

И чем используется для ГДЕ утверждение:

Month(CONVERT (VARCHAR(11),DATEADD(day,wo_header.closing_date,'1971/12/31'),106)) = month(getdate())-1

Так что для любого, как я, работающего в среде с отчетами SQL, это должно работать.

0 голосов
/ 27 апреля 2018

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

DECLARE @FirstDayOfLastMonth     DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))),
        @LastDayOfLastMonth      DATETIME = CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE()))

        SELECT @FirstDayOfLastMonth, @LastDayOfLastMonth

Ваш требуемый запрос

 SELECT *
       FROM   TABLE
       WHERE  CAST(issue_date AS DATE) BETWEEN CONVERT(DATE, DATEADD(d, -(DAY(DATEADD(m, -1, GETDATE() - 2))), DATEADD(m, -1, GETDATE() - 1))) AND CONVERT(DATE, DATEADD(d, -(DAY(GETDATE())), GETDATE()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...