sql查语句询一周以前的记录
用oracle怎么样来查询以当前时间为准,一周以前的记录,急用,希望大侠们帮忙!
------解决方案--------------------
--此处按周一到周日为一周计算
select * from 你的表 where to_char(时间列,'yyyy-mm-dd') < to_char(next_day(sysdate-7, '星期一')-1,'yyyy-mm-dd');
------解决方案--------------------请问这个时间列对应什么,我不知道,本人鱼笨
------解决方案--------------------是不是数据库的字段名
------解决方案--------------------你表中用来查询的时间字段的名称
------解决方案--------------------如果你的数据库是英文的就应把星期一改为MON,不过一般的都是中文的
--执行这个看下你数据库的日期格式,应是中文的
select to_char(sysdate,'day') from dual;
------解决方案--------------------select * from orders where to_char(createdate,'yyyy-MM-DD')<to_char(next_day(sysdate-7,'星期一')-1,'yyyy-MM-DD');
刚才试了下,说是无效字符,ORA-00911无效字符错误
------解决方案--------------------
SQL> create table orders(
2 id int,
3 createdate date
4 );
表已创建。
SQL> insert into orders values(1,sysdate-7);
已创建 1 行。
SQL> insert into orders values(1,sysdate-6);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from orders where to_char(createdate,'yyyy-MM-DD')<to_char(next_day(sysdate-7,'星期一')-1,'yyyy-MM-DD');
ID CREATEDATE
---------- --------------
1 06-8月 -12
1 07-8月 -12
------解决方案--------------------谢谢你,但还是不行,我无语了,我自己在弄弄吧
------解决方案--------------------没事,那就不太清楚了,我插入一条日期为null的也没有报错
------解决方案--------------------SELECT trunc(SYSDATE,'Dy')-7 FROM dual; --求得本周一的日期再减七天
SELECT sysdate-7 FROM dual;直接就是七天前的数据。。。
哪个是你要的?