Динамическое изменение даты на основе getdate - PullRequest
0 голосов
/ 07 июня 2019

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

Пробовал с CASE выражением, которое не сработало

select case when datepart(day, getdate()) <= 2 
            then (select * from T1 where date in (201904,201903))
            else (select * from T1 where date in (201905,201904))
       end

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

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Может быть, вы можете использовать это, чтобы "пометить", если это в течение первых 3 дней или нет. он отформатирован так, чтобы выглядеть как INT.

DECLARE @Currentday AS INT

SET @Currentday = cast(replace(cast(GETDATE() AS DATE), '-', '') AS INT)

IF @Currentday BETWEEN cast(replace(cast(DATEADD(month, DATEDIFF(month, 0, getdate()), 0) AS DATE), '-', '') AS INT)
        AND cast(replace(cast(DATEADD(month, DATEDIFF(month, 0, getdate()), 2) AS DATE), '-', '') AS INT)
    -- if within first 3 days
    SELECT 1 --insert your own statement
ELSE
    -- if not within first 3 days
    SELECT 2 --insert your own statement
0 голосов
/ 07 июня 2019

Немного догадка, но что-то вроде этого?

SELECT {Columns}
FROM {Your Table} YT
WHERE YourDateColumn >= DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(DAY, -2, GETDATE())),0)
  AND YourDateColumn < DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(DAY, -2, GETDATE()))+1,0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...