Oracle 查询今日、昨日、本周、本月和本季度的所有记录
一、字段类型为date
1.今日
select * from 表名 where to_char(字段名,'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd')
2.昨日
select * from 表名 where to_char(字段名,'yyyy-MM-dd')= to_char(sysdate-1,'yyy-MM-dd')
3.本周
select * from 表名 where to_char(字段名,'iw')=to_char(sysdate,'iw') and to_char(字段名,'yy')=to_char(sysdate,'yy')
4.本月
select * from 表名 where to_char(字段名,'yyyy-MM')=to_char(sysdate,'yyyy-MM')
5.本季度
select * from 表名 where to_char(字段名,'q')=to_char(sysdate,'q') and to_char(字段名,'yy')=to_char(sysdate,'yy')
二、 字段类型为varchar2,格式要与格式化的样式匹配
1.今日
select * from 表名 where to_char(to_date(字段名,'yyyy-MM-dd'),'yyyy-MM-dd')=to_char(sysdate,'yyyy-MM-dd')
2.昨日
select * from 表名 where to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd')=to_char(sysdate-1,'yyyy-MM-dd')
3.本周
select * from 表名 where to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'iw')=to_char(sysdate,'iw') and to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'yy')=to_char(sysdate,'yy')
4.本月
select * from 表名 where to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM')=to_char(sysdate,'yyyy-MM')
5.本季度
select * from 表名 where to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'q')=to_char(sysdate,'q') and to_char(to_date(字段名,'yyyy-MM-dd hh24:mi:ss'),'yy')=to_char(sysdate,'yy')
备注:直接复制文章中的sql在PL/SQL中执行可能报如下错误
如果出现上图所示的Error,可以将PL/SQL中下面显示红色波浪线的空格删除,重新敲空格
造成如上的原因可能是CSDN的文本编辑器的空格编码和PL/SQL的空格编码不一致