我需要根据日期数据类型字段从 oracle 表中选择当前日历周的记录。目前我正在这样做:
select * from my_table where enter_date > sysdate -7
如果今天是星期四,则此查询将选择从今天开始 7 天后渗透到上周星期四的记录。有没有办法动态选择当前日历周的记录?
如果您的一周从星期一开始,那么:
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
to_char(sysdate, 'd')
返回 [1..7] 范围内的星期几;所以尝试使用
select *
from my_table
where enter_date >= trunc(sysdate) - to_char(sysdate, 'd') + 1
以下是您可以尝试的查询
select Table1.*
from Table1
where dates > sysdate - TO_CHAR(SYSDATE,'D')