SQL-запрос MS-Access - фильтрация по дате - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь записать запрос Microsoft Access, который вернет все данные в таблице, в которой назначенная дата «в срок» находится в пределах дня.

То есть, когда я прихожу в офис в АМ, я должен быть в состоянии выполнить этот запрос, чтобы увидеть, что должно было быть вчера, а что должно быть сегодня.Вот пример данных:

 | ID | JobName                 | DueBy     |
 |----|-------------------------|-----------|
 | 1  | Sergio Pizza            | 5/5/2018  |
 | 2  | Hopkins Hospital        | 9/1/2018  |
 | 3  | Perry Hall High School  | 9/25/2018 |
 | 4  | Parkville High School   | 9/24/2018 |
 | 5  | Jim's House             | 9/24/2018 |

Мой текущий запрос:

SELECT tblBid.*
FROM tblBid
WHERE (((tblBid.Due_By)>=(Now()-2)));

, который работает при возврате правильного набора данных:

 | ID | JobName                 | DueBy     |
 |----|-------------------------|-----------|
 | 3  | Perry Hall High School  | 9/25/2018 |
 | 4  | Parkville High School   | 9/24/2018 |
 | 5  | Jim's House             | 9/24/2018 |

Однако, почему мне нужно писать NOW () - 2, а не NOW () - 1?Почему я должен вернуться на два дня?Когда я пишу СЕЙЧАС () - 1, я получаю только 3 ID для школы Перри Холл

Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Использование DateDiff :

SELECT tblBid.*
FROM tblBid
WHERE DateDiff("d", tblBid.Due_By, Date()) Between 1 and 0;
0 голосов
/ 26 сентября 2018

Вы используете функцию Now(), которая возвращает текущую дату и время, даты в вашей таблице не имеют временной части, делающей их 12:00 этой даты, поэтому перед Now() - 1 вам необходимо использовать Date() функция, которая возвращает дату в 12:00, а затем вы можете использовать ее как Date() - 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...