consultation(patient_id, cdate, doctor_id)
我想要昨天使用提取物治疗过的患者的详细信息 但是我遇到了错误
ORA-00911:无效字符
我的代码:
select *
from consultation
where extract(day from cdate) = extract(day from sysdate) - '1';
答案 0 :(得分:2)
您可以避免使用extract
,只需使用:
select *
from consultation
where trunc(cdate) = trunc(sysdate-1)
在这里,我使用trunc
删除时间部分;另外,请注意,通过使用extract
比较日期,您不仅会获得昨天的记录,甚至还会获得过去几个月的记录。
如果您需要获取第6天(假设sysdate是5月7日)的所有记录,无论是月份还是年份,都可以使用:
where extract(day from cDate) = extract(day from sysdate -1)
答案 1 :(得分:1)
最好不要在日期列上使用EXTRACT
,这样效率较低,尤其是在日期列上有索引或分区的情况下。只需在TRUNC
上使用SYSDATE
select * from consultation where
cdate >= TRUNC(sysdate) - 1
AND cdate < TRUNC(SYSDATE)
答案 2 :(得分:0)
您需要输入整数1而不是字符串'1'
select * from consultation where
extract(day from cdate) = extract(day from sysdate) - 1;