Как выполнить запрос, устанавливающий динамическую точную дату? - PullRequest
1 голос
/ 24 мая 2019

В настоящее время мне нужно улучшить запрос, который на самом деле приносит информацию с момента его запуска до последних двух лет.Это означает, что если мы запустим его сегодня, 24/05/2019, информация будет поступать с 24.05.2017 по сегодняшний день.

Но теперь мне нужно изменить это, чтобы получить информацию с текущей даты начала года, в который вывыполнить запрос (01-01-201X) и, учитывая последние два года (01-01-201X-2), это означает, что он должен быть выполнен сегодня и доставит информацию с 01-01-2017 по 01-01-2019, и это должно работать на основе дня, когда вы запускаете отчет.Любое предложение?

Это в SQL Server Management Studio:

SELECT     
    dbo.Customer.[No.], dbo.Customer Detail.[Posting Date], 
    dbo.Customer Detail.[Initial Entry Global Dim. 1], 
    dbo.Customer.Blocked
FROM
    dbo.Customer 
INNER JOIN
    dbo.Customer Detail ON dbo.Customer.[No.] = dbo.Customer Detail.[Customer No.]
WHERE     
    (dbo.Customer Detail.[Posting Date] >= DATEADD(yy, - 2, CONVERT(datetime, GETDATE(), 102)))

1 Ответ

2 голосов
/ 24 мая 2019

Одним из простых решений в SQL Server является использование DATEDIFF():

WHERE DATEDIFF(year, dbo.CustomerDetail.[Posting Date], getdate()) <= 2

И индекс-совместимое решение использует datefromparts():

WHERE dbo.CustomerDetail.[Posting Date] >= DATEFROMPARTS(YEAR(GETDATE() - 2, 1, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...