在ORACLE中,用SQL语句搜索上周的记录
今天做项目时,遇到了一个小问题,就是要求列出在上周录入的所有数据。在下愚钝,想了好一会才实现了这个功能,拿来和大家分享一下。
具体语句为:
select t.* from 表名 t
where
时间字段>=(select trunc(sysdate-to_char(sysdate,'d')-7+2) from dual)
and
时间字段<=(select trunc(sysdate-to_char(sysdate,'d')+1) from dual)
该语句经测试有效,可以列出上一周的所有记录。
语句分析:
sysdate:系统当前时间
to_char(sysdate,'d'):当天是本周的第几天(在ORACLE中,每周的第一天默认为周日,即:如果是周3,则返回的值为4)
sysdate-to_char(sysdate,'d'):返回的值应是上周6的日期
-7:上周的上周的周6的日期
+2:上周的周1的日期(依据个人习惯,我习惯从周1开始算到周日作为一周)
sysdate-to_char(sysdate,'d')+1:返回上周的周日的日期
trunc():此函数用于去掉sysdate后面的分秒,具体用法可以在网络上找到相关资料
这就是在下做这个小功能的一些收获,欢迎大家讨论、指教