Вернуть записи с сегодняшнего месяца + 6 - PullRequest
0 голосов
/ 04 мая 2018

как мне вернуть записи о продажах с сегодняшнего дня + 6 месяцев.

Пример:

Сегодняшний месяц: май-2018. Сегодняшний месяц + 6: ноябрь-2018

Итак, я хочу, чтобы функция извлекала записи из Table_Date с ноября (1 по 30).

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Используйте функции TRUNC и ADD_MONTHS:

SELECT *
FROM   sales
WHERE  SalesDate >= ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 6 )
AND    SalesDate <  ADD_MONTHS( TRUNC( SYSDATE, 'MM' ), 7 );
0 голосов
/ 04 мая 2018

У вас есть SQL-сервер и оракул, это не может быть и другое.

Это для SQL Server (хотя логика будет работать в ORACLE, но синтаксис может не работать)

Это 6 месяцев с сегодняшнего дня. ВЫБЕРИТЕ ДАТА ДОБАВЛЕНИЯ (MM, 6, GETDATE ())

Добавлен дополнительный код здесь для более подробной информации после просмотра вопроса больше:

Я использую переменные для выполнения вычислений, чтобы их было легче понять, но вы можете сделать все это встроенным (но труднее для чтения).

Этот скрипт получает дату через 6 месяцев, берет этот месяц и находит первый день этого месяца, а затем последний день этого месяца, чтобы вы могли использовать эти 2 даты в логике предложения where.

DECLARE @NewMonth AS VARCHAR(10)
DECLARE @NewYear AS VARCHAR(10) -- in case adding months goes to next year
SELECT @NewMonth  = DATEPART(MONTH, DATEADD(MM, 6, GETDATE())),
@NewYear = DATEPART(YEAR, DATEADD(MM, 6, GETDATE()))

DECLARE @FirstOfMonth AS DATE = @NewMonth + '/1/' + @NewYear

-- for start of month check we can just hard code one in it, for end of month we cant because we dont know how many days are in it
SELECT @FirstOfMonth, DATEADD(DAY, -1, DATEADD(MONTH, 1, @FirstOfMonth)) AS LastDayOfMontbh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...