oracle时间问题
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 " 说明与此次调用相匹配)?
还有我想只做时间的比较,不要日期,应该怎么写?
------解决方案--------------------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:14
SQL> 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:14
SQL> 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类型就可以了 ^_^