Как получить все записи из заданного дня и заданного месяца, но с переменным годом? - PullRequest
0 голосов
/ 17 апреля 2019

Мне нужно получить все записи после установленного дня и установленного месяца, но с переменным годом. IE: мне нужно восстановить все записи после 1 октября, растянувшись на 3 года назад.

Лучший пример: в 2019 году мне нужно будет получить все записи с 10.10.2016. В 2020 году мне нужно будет восстановить все записи с 01.10.2017.

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

Я делал это для своего предложения WHERE, но он, очевидно, не отфильтровывает записи до 10/01/2016, как мне нужно: ГДЕ Дата> DATEADD (год, -3, GETDATE ());

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Предполагая версию 2012 или выше, вы можете использовать datefromparts:

SELECT ...
FROM TableName
WHERE DateColumn >= DATEFROMPARTS(YEAR(GETDATE())-3, 10, 1);

Для более старых версий вы можете построить дату вручную:

SELECT ...
FROM TableName
WHERE DateColumn >= CAST((CAST(YEAR(GETDATE())-3 as char(4)) + '-10-01') as date);
0 голосов
/ 17 апреля 2019

Предполагая, что для любой даты в данном году, который вы хотите назначить на октябрь от 3 лет назад (так и для 1 января, и для 31 декабря 2019 года вы хотели бы, чтобы 1 октября 2016 года), вы могли бы сделать:

SELECT ...
FROM ...
WHERE YourDateColumn >= DATEFROMPARTS(DATEPART(YEAR, GETDATE())-3,10,1)
  AND YourDateColumn <= GETDATE()
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...