急,在线等,涉及到毫秒的oracle中时间加减的问题
要求我编写PC文件处理数据库里面一张表里的data_time这个字段的值,这个值是以yyyymmddhhmisst这样的格式存放的,就像这样200711221246576的值,现在要求对这个字段的值进行加减时间的操作,然后重新更新,要求能够处理加减yyyy或者yy或者mm或者dd或者hh或者hhh或者mi或者ss或者t这几种格式的操作,求各位给点方法,怎么来处理这个问题?不胜感激!
------解决方案--------------------select sysdate, sysdate+1/24, sysdate +1/1440, sysdate + 1/86400 from dual;
------解决方案--------------------date类型不能到毫秒的,要用timestamp类型.
用numtodsinterval这个函数进行加减(毫秒的还没找到)
select sysdate + numtodsinterval(150, 'DAY') from dual;
numtodsinterval(1500, 'HOUR')
numtodsinterval(15000, 'MINUTE')
numtodsinterval(150000, 'SECOND')
------解决方案--------------------SQL> create table t(a timestamp);
表已创建。
SQL> insert into t(a) values(systimestamp);
已创建 1 行。
SQL> update t set a=a+numtodsinterval(1,'day') --加一天
2 ;
已更新 1 行。
SQL> update t set a=a+numtodsinterval(1,'hour') --加一小时
2 ;
已更新 1 行。
SQL> update t set a=a+numtodsinterval(1,'second') --加一秒
2 ;
已更新 1 行。
SQL> update t set a=a+numtodsinterval(500/1000,'second') --加500毫秒
2 ;
已更新 1 行。
SQL> select * from t;
A
---------------------------------------
2008-02-28 12:35:34.546000