从Oracle表中每周选择一次记录

时间:2013-08-15 13:25:37

标签: sql oracle11g

我需要根据日期数据类型字段从oracle表中选择当前日历周的recods。目前我这样做:

select * from my_table where enter_date > sysdate -7

如果今天是星期四,此查询将从今天起七天选择记录,这些记录将在周四渗透到上周。有没有办法动态选择当前日历周的记录?

2 个答案:

答案 0 :(得分:2)

如果您的一周从星期一开始,那么:

select ...
from   ...
where  dates >= trunc(sysdate,'IW')

对于一周中第一天的替代定义,trunc(sysdate,'W')截断到当前月份开始的星期几,trunc(sysdate,'WW')截断到当天本年开始的那一周。

请在此处查看其他可用截断:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions255.htm#i1002084

答案 1 :(得分:1)

to_char(sysdate, 'd')返回[1..7]范围内的星期几;所以尝试使用

select *
  from my_table
 where enter_date >= trunc(sysdate) - to_char(sysdate, 'd') + 1