我的一条SQL语句是  "SELECT ORDER_NO FROM SHUKKAH_F WHERE SYUO_YMD = SYSDATE - 1"
SYUO_YMD 的格式为 2004/03/05
其中的系统日期减一如何写呢?

解决方案 »

  1.   

    不知道你的SYUO_YMD 日期格式是 什么格式,
    系统日期格式减一为/sysdate-1,不要有空格,如果是字符型的,
    可以to_char(sysdate-1,'YYYYMMDD'),后面的格式你可以参照详细说明进行转换。
      

  2.   

    1、如SYUO_YMD 为字符字段类型,则 
    SELECT ORDER_NO FROM SHUKKAH_F WHERE SYUO_YMD = to_char(SYSDATE,'yyyy/mm/dd')-1;2、如SYUO_YMD 为日期字段类型,则:
    SELECT ORDER_NO FROM SHUKKAH_F 
    WHERE to_char(SYUO_YMD,'yyyy/mm/dd') = to_char(SYSDATE,'yyyy/mm/dd')-1;因为sysdate格式为:'yyyy/mm/dd hh24:mi:ss'
      

  3.   

    SQL> select to_char(SYSDATE,'yyyy/mm/dd')-1 from dual;
    select to_char(SYSDATE,'yyyy/mm/dd')-1 from dual
           *
    ERROR 位于第 1 行:
    ORA-01722: 无效数字to_char后是字符型,怎么能做-1操作呢?除非将/去掉。既然syud_ymd是日期型,就用贴主贴中的哪个语句即可。
    sysdate - 1是成立的,不存在多空格问题。
    贴主发现了什么错误呢????
      

  4.   

    我支持楼上的观点,也作了测试,猫猫的写法是错的。 sysdate - 1 是直接可以用,不过是日期-1 ,我想知道如果要年,月,或者小时,分钟,秒减1呢,如何作,向各位请教。
      

  5.   

    在oracle中是没有错误的.
    我是嵌入到java中的,在java也没有问题.
      

  6.   

    楼上的楼上,我想这样可以,希望你有收获
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;TIME
    -------------------
    2004-04-20 13:50:03//小时减1;SQL> select to_char(sysdate,'yyyy-mm-dd')||' '||(to_char(sysdate,'hh24')-1)||'时' time from dual;
    TIME
    -----------------------------------------------------
    2004-04-20 12时
      

  7.   

    日减一 
    select sysdate - 1 from dual
    月减一
    select add_months(sysdate,-1) from dua
    年减一
    select add_months(sysdate,-12) from dua