Выберите записи 1-2 года с даты начала - PullRequest
3 голосов
/ 18 января 2020

У меня есть две таблицы, одна из которых имеет дату начала, дату окончания и возраст:

Begin_Date  End_Date            Age
2015-12-14 00:00:00.0000000 NULL 1
2015-12-10 19:00:00.0000000 NULL 1
2015-12-09 19:00:00.0000000 NULL 1
2015-12-07 00:00:00.0000000 NULL 1
2015-12-06 00:00:00.0000000 NULL 1
2015-12-06 00:00:00.0000000 NULL 1
2015-12-06 00:00:00.0000000 NULL 1
2015-12-05 00:00:00.0000000 NULL 1
2015-12-05 00:00:00.0000000 NULL 1
2015-12-05 00:00:00.0000000 NULL 1
2015-12-05 00:00:00.0000000 NULL 1
2014-12-12 00:00:00.0000000 NULL 1

Другая таблица имеет связанные местоположения для этих записей на основе уникального идентификатора. Столбец возраста - это возраст, когда он был введен в таблицу.

У меня есть оператор, объединяющий эти две таблицы, но я изо всех сил пытаюсь написать вторую половину этого запроса. Я хочу, чтобы запрос извлекал записи из второй таблицы, начиная с 1 год с даты начала в первой таблице. (т. Е. Я не хочу местоположения с 2015-2016, но я действительно хочу местоположения с 2016 по текущая дата.) Прямо сейчас у меня есть извлечение записей из второй таблицы, начиная с даты начала, но я не могу понять, как сказать, что она начинается через 1 год после даты начала. Спасибо за вашу помощь.

То, что у меня есть для предложения WHERE, таково:

WHERE(points.DateYearAndJulian BETWEEN xref.Begin_Date AND COALESCE (xref.End_Date, GETDATE() + 1))

1 Ответ

1 голос
/ 18 января 2020

На SQL сервере вы можете использовать dateadd() для добавления заданного интервала к дате, например:

dateadd(year, 1, Begin_Date)

Если бы я правильно следил за вами, вы включили бы это в свой запрос следующим образом :

WHERE points.DateYearAndJulian 
    BETWEEN dateadd(year, 1, xref.Begin_Date) 
    AND COALESCE (xref.End_Date, GETDATE() + 1)

Или, если вы хотите, чтобы в столбце age было указано количество добавляемых лет, то:

WHERE points.DateYearAndJulian 
    BETWEEN dateadd(year, xref.Age, xref.Begin_Date) 
    AND COALESCE (xref.End_Date, GETDATE() + 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...