Получить вчера детали, используя экстракт в SQL - PullRequest
0 голосов
/ 07 мая 2019
consultation(patient_id, cdate, doctor_id)

Мне нужны данные о пациентах, которых вчера лечили с помощью экстракта, но я получаю ошибку

ORA-00911: недопустимый символ

Мой код:

select * 
from consultation 
where extract(day from cdate) = extract(day from sysdate) - '1';

Ответы [ 3 ]

2 голосов
/ 07 мая 2019

Вы можете избежать extract и просто использовать:

select *
from consultation 
where trunc(cdate) = trunc(sysdate-1)

Здесь я использую trunc, чтобы удалить часть времени; также обратите внимание, что с помощью extract для сравнения дня вы получите не только записи вчерашнего дня, но даже записи за прошедшие месяцы.

Если вам нужно получить все записи, где день 6 (при условии, что sysdate 7 мая), независимо от месяца или года, вы можете использовать:

where extract(day from cDate) = extract(day from sysdate -1)
1 голос
/ 07 мая 2019

Не используйте EXTRACT в столбце даты, это менее эффективно, особенно если в столбце даты есть индекс или раздел.просто используйте TRUNC на SYSDATE

select * from consultation where 
     cdate  >= TRUNC(sysdate) - 1
 AND cdate  <  TRUNC(SYSDATE)
0 голосов
/ 07 мая 2019

вам нужно поставить целое число 1, а не строку '1'

select * from consultation where
extract(day from cdate) = extract(day from sysdate) - 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...