Код SQL для определения, если дата тестирования (A) находится в пределах N дней от даты тестирования (B), а затем возвращает строку членов с обеими датами

Я пишу SQL-запрос в Teradata, чтобы определить, какие участники прошли тест eGFR и uACR с разницей в 4 дня. Все тесты подтягиваются корректно, но не уверен, к кому обратиться по этому поводу в предложении WHERE. Пример кода SQL

Мне нужны только возвращаемые данные, где это верно.

я пробовал это

AND [uACR_2b_2_DATE] <= ([uACR_2b_1_DATE] + 4 Days)

также другая попытка

пример кода2

Синтаксис SQL Server сильно отличается от синтаксиса Teradata, выберите только один.

MatBailie 07.01.2023 00:05

Если это на самом деле ДАТА, все просто:AND uACR_2b_2_DATE <= uACR_2b_1_DATE + 4 Если это временная метка, вам нужен стандартный синтаксис интервала SQLAND uACR_2b_2_DATE <= uACR_2b_1_DATE + interval '4' day

dnoeth 07.01.2023 15:36

О, это Teradata, и извините, я не знал, что не должен загружать изображение для кода.

lauralee175 09.01.2023 13:58

@dnoeth ваше предложение сработало. Спасибо!

lauralee175 12.01.2023 19:10
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
5
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На сервере sql есть DATEDIFF для определения расстояния, это работает с днями, часами и т. д.

DECLARE
 @dt1 DATETIME = '20230102 23:59:59' 
 ,@dt2 DATETIME = '20230103 00:00:00'


SELECT difference_ABS = ABS( DATEDIFF(DAY, @dt1, @dt2) )

Это игнорирует часть времени и дает абсолютное (без отрицаний) расстояние части даты. Таким образом, в этом примере вы получаете расстояние в один день, хотя две временные метки разделены на одну минуту. Если это то, что Вы хотели бы использовать, просто поставьте WHERE-CLAUSE вот так

ABS( DATEDIFF(DAY, uACR_2b_1_DATE, uACR_2b_2_DATE) ) <= 4

Я попробовал это, но получил сообщение об ошибке, что чего-то не хватает между "(" и "ДЕНЬ"

lauralee175 09.01.2023 14:40

Только что проверил еще раз (на сервере sql), и это сработало. Справку по Teradata можно найти по этой ссылке: docs.teradata.com/r/…

Der U 09.01.2023 19:27

Другие вопросы по теме