oracle怎么查询上周的数据(例如今天是周日,我要查询出上个周一到周日的数据)

 我来答
百度网友fb8557cbe
2011-04-04
知道答主
回答量:42
采纳率:0%
帮助的人:27万
展开全部
--1、取某天在本周中的第几天(默认周日开始算第1天)
select to_char(to_date('2011-04-11','yyyy-mm-dd'), 'd') from dual;
--2、如果要从周一开始算第1天,需要做一些手脚
--大概思路是:1变成7,2变成1,3变成2......,7变成6
select decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1)
from dual;

--3、再根据上面的结论倒推到上周时间
select to_date('2011-04-04', 'yyyy-mm-dd') -
decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1,

to_date('2011-04-04', 'yyyy-mm-dd') -
decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),
1,
7,
to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1 + 6
from dual;
yxd2766
2011-04-02 · 超过30用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:74.6万
展开全部
select * from table
where time between (trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+2) and
(trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+8)
追问
11年4月4号是周一,我要查询上周一至上周日的数据,也就是3月28号至4月3号之间的数据!但是4月3号的数据用你的查询语句是查不出来滴
追答
我在本地测试的时候是好好的,莫非那个环节出问题了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式