declare DateValue date; 
begin 
    select sysdate into DateValue from dual; 
    dbms_output.put_line(to_char(DateValue - 1));
end;
为什么我这样写只显示日期 22-8月 -07, 
一定要写成
dbms_output.put_line(to_char(DateValue - 1, 'YYYY-MM-DD HH24:MI:SS'));吗?to_char('2007-8-23 10:23:14', 'YYYY-MM-DD HH24:MI:SS')为什么报错(有太多"to_char" 说明与此次调用相匹配)?还有我想只做时间的比较,不要日期,应该怎么写?

解决方案 »

  1.   

    to_char里面的参数必须为非字符串类型的值:
    SQL> select to_char(to_date('2007-8-23 10:23:14','YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') from dual
      2  ;TO_CHAR(TO_DATE('2007-8-2310:2
    ------------------------------
    2007-08-23 10:23:14SQL> select to_char(to_date('2007-8-23 10:23:14','YYYY-MM-DD HH24:MI:SS'), 'HH24:MI:SS') from dual;TO_CHAR(TO_DATE('2007-8-2310:2
    ------------------------------
    10:23:14SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
    ------------------------------
    2007-08-22 22:58:30如果比较时间:where to_char(to_date('2007-8-23 10:23:14','YYYY-MM-DD HH24:MI:SS'), 'HH24:MI:SS') > to_char(sysdate, 'HH24:MI:SS')
    如果比较想日期+时间: 
    where to_date('2007-8-23 10:23:14','YYYY-MM-DD HH24:MI:SS') > sysdate注意to_date里面的值为非date类型就可以了 ^_^