用sql语句从oracle数据库取当前日期减7天及加10天的日期段应该怎么写?
之前是这样写的“select * from tb_test where date between to_date('sysdate-7','yyyy-mm-dd') and to_date('sysdate+10','yyyy-mm-dd')”,报错:完整的年份值必须介于-4713和+9999之间,且不为0
之前是这样写的“select * from tb_test where date between to_date('sysdate-7','yyyy-mm-dd') and to_date('sysdate+10','yyyy-mm-dd')”,报错:完整的年份值必须介于-4713和+9999之间,且不为0
解决方案 »
- oracle报ORA-600 [6191] or ORA-600 [6193] 错误的解决
- 有什么工具可以把mysql的数据结构包括数据全部导入到oracle中?
- oracle 查询优化
- 一台强劲的服务器 oracle
- 一张表中,ID的循环查询
- 基于P4 CPU的windowsXP平台上安装oracle 8i错误:symcjit.dll更名为symcjit.old虽能成功安装,但总是java.exe报错
- 求救!oracle的连接问题
- select语句实现功能,详见贴内容!
- 请帮忙
- 弱水三千进来!!!!请教你点问题!!!!考勤系统的开发(用oracle做数据库)
- 我的oracle10g数据库有如下问题:
- oracle 在查询结果表中再次查询的问题,请高手指点
--直接sysdate加减就可以了
select * from tb_test where date between sysdate-7 and sysdate+10
SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DD')
-----------------------------
2011-05-06SQL> select sysdate-7,sysdate+10 from dual;SYSDATE-7 SYSDATE+10
----------- -----------
2011-04-29 2011-05-16SQL> select to_date('sysdate-7','yyyy-mm-dd') from dual;
//这里将sysdate-7看做一个字符串,因为它被单引号引着.
//实际上你是将一个字符串通过日期函数转换为日期,所以你会得到下面的错误
ORA-01841: (full) year must be between -4713 and +9999, and not be 0SQL> select to_date(to_char(sysdate-7,'yyyy-mm-dd'),'yyyy-mm-dd') dt1,
2 to_date(to_char(sysdate+10,'yyyy-mm-dd'),'yyyy-mm-dd') dt2
3 from dual;DT1 DT2
----------- -----------
2011-04-29 2011-05-16
直接来
select last_day(add_months(sysdate,-1)) from dual;
select sysdate +10 from dual;你的语句之所以报错是因为:sysdate已经是日期类型的,再用to_date函数当然会报错了。
select * from tb_test where date between to_date('sysdate-7','yyyy-mm-dd') and to_date('sysdate+10','yyyy-mm-dd')”
可以修改成:
select * from tb_test where date between to_date(to_char('sysdate-7','yyyy-mm-dd'),'yyyy-mm-dd') and to_date(to_char('sysdate+10','yyyy-mm-dd'),'yyyy-mm-dd')”
就可以了
还有你可以参考一下oracle数据库中next_day()和 last_day()函数
祝你成功。