用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

解决方案 »

  1.   

    to_date('sysdate-7'本来就是date类型,为什么还要to_Date
      

  2.   

    是为了得到需要的格式呀,不to_date直接取也取不到的……
      

  3.   

    to_date(to_char(sysdate-7,'YYYY-MM-DD'),'YYYY-MM-DD'),俺一般都是这是办滴
      

  4.   


    --直接sysdate加减就可以了
    select * from tb_test where date between sysdate-7 and sysdate+10
      

  5.   

    直接sysdate-7就可以拉,干吗还转换成字符再转日期,多此一举
      

  6.   


    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
      

  7.   

    select * from tb_test where date >= sysdate-7 and  date <= sysdate+10
      

  8.   

    select * from tb_test where to_char(date,'yyyymmdd') >= to_char(sysdate-7,'yyyymmdd') and date <= to_char(sysdate+10,'yyyymmdd')
      

  9.   

    sysdate单位是天,所以用起来比较方便的
      

  10.   

    select * from tb_test where date between sysdate-7 and sysdate+10
    直接来
      

  11.   

    楼主是不是想获得上个月月底的日期啊,可以用
    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()函数
    祝你成功。
      

  12.   

    SYSDATE是date类型,to_date()函数是将字符型数据转换成date类型,写的sql语句有问题,楼上的已经给出了正确答案!