Идентификация новых данных на основе идентификатора и даты

#sql #ms-access

Вопрос:

Следующий SQL-запрос не обнаруживает изменений в моей таблице :

 SELECT ID FROM Test WHERE TheDate=#21/10/2021# AND NOT EXISTS (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #21/10/2021#))  

Например, с помощью этой таблицы :

 TheDate ID 21/10/2021 1 21/10/2021 7 20/10/2021 1 20/10/2021 2 20/10/2021 3 19/10/2021 3 18/10/2021 3  

Приведенный выше запрос должен возвращать 7.

Моя цель-получить новый идентификатор, которого не существовало 1 день назад.

Что я делаю не так?

Ответ №1:

Существуют записи с этой даты. Попробуйте использовать IN :

 SELECT ID From Test WHERE TheDate=#21/10/2021# AND ID NOT IN (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #21/10/2021#))  

Или:

 SELECT ID From Test WHERE TheDate=#2021/10/21# AND ID NOT IN (SELECT ID FROM Test WHERE TheDate=DateAdd("d", -1, #2021/10/21#))  

введите описание изображения здесь

Комментарии:

1. И использование 2021 года в ваших тестовых данных — все ваши записи относятся к 2022 году.

2. Да, это так. Но, возможно, вам нужна последовательность ISO для даты. Смотрите расширенный ответ, пожалуйста.

3. Хорошо, Густав, NOT IN не работает, если у меня пустое поле. Так что мне удалось это исправить ! Спасибо!