粪发涂墙

 

在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后面的分秒,具体用法可以在网络上找到相关资料

这就是在下做这个小功能的一些收获,欢迎大家讨论、指教

posted on 2007-03-14 16:01  野猪&翔帅  阅读(1010)  评论(1编辑  收藏  举报

导航