使用SQL中的提取功能获取昨天的详细信息

时间:2019-05-07 06:56:08

标签: sql oracle

consultation(patient_id, cdate, doctor_id)

我想要昨天使用提取物治疗过的患者的详细信息 但是我遇到了错误

  

ORA-00911:无效字符

我的代码:

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

3 个答案:

答案 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;