0

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

select * from my_table where enter_date > sysdate -7

如果今天是星期四,则此查询将选择从今天开始 7 天后渗透到上周星期四的记录。有没有办法动态选择当前日历周的记录?

4

3 回答 3

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

于 2013-08-15T13:56:06.267 回答
1

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

select *
  from my_table
 where enter_date >= trunc(sysdate) - to_char(sysdate, 'd') + 1
于 2013-08-15T13:36:28.800 回答
1

这是 SQLFiddel 演示

以下是您可以尝试的查询

select Table1.* 
  from Table1 
 where dates > sysdate - TO_CHAR(SYSDATE,'D')
于 2013-08-15T13:41:43.810 回答