100分在线等,timestamp相减用于trunc函数提示“数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SE
100分在线等,timestamp相减用于trunc函数提示“数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND”
例:select trunc(T2-T1) from ezMoniOnline where id=1
提示:数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND
没用过oracle,半天没调通,谢谢大虾!!!!!!!!!!!!!!!
[解决办法]
[解决办法]
- SQL code
--试试这样可以不?select trunc(to_char(T2-T1,'yyyy-mm-dd hh24:mi:ss')) from ezMoniOnline where id=1;
[解决办法]
- SQL code
--timestamp类型相差的天数,还真不简单啊select trunc(to_number(substr((t2-t1),1,instr(t2-t1,' ')))) from ezMoniOnline where id=1
[解决办法]
[解决办法]
[解决办法]
- SQL code
select trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))*24*60*60from ezMoniOnline where id=1
[解决办法]
[解决办法]
trunc 函数用的不对,timestamp类型相减后得到的不是数字类型的值!
[解决办法]
select to_timestamp('20100908','yyyymmdd') - to_timestamp('20100907','yyyymmdd') from dual;
得到的不是数字,是包含 天、时、分、秒的一个结果,从中截取可以得到天、时、分、秒。
[解决办法]
貌似不能得到的。数据类型不一致。
[解决办法]
[解决办法]
[解决办法]
SELECT to_number(substr((t2-t1),instr((t2-t1),' ')+7,2))+to_number(substr((t2-t1),instr((t2-t1),' ')+4,2))*60+to_number(substr((t2-t1),instr((t2-t1),' ')+1,2))*3600+trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))*86400
from ezMoniOnline
where id=1
;
基本上就这样,没有简单的方法
[解决办法]
方法很多,
要最少代码的实际可以使用MONTHS_BETWEEN
- SQL code
SQL> select * from ezmonionline; T1 T2 ID ------------------ --------------------- 08-11月-10 01.42.45.656000 下午 09-11月-10 01.42.45.000000 下午 1SQL> select months_between(T1,T2)*31*24*3600 from ezmonionline;MONTHS_BETWEEN(T2,T1)*31*24*36------------------------------ 86400SQL>
[解决办法]
- SQL code
select extract(day from inter) * 24 * 60 * 60 + extract(hour from inter) * 60 * 60 + extract(minute from inter) * 60 + extract(second from inter) "seconds"from (select to_timestamp('20100115112233','yyyymmddhh24miss') -to_timestamp('20100101123456','yyyymmddhh24miss') interfrom dual); seconds---------- 1205257
[解决办法]
select trunc(to_date('2020-10-01','yyyy-mm-dd')-sysdate) from dual;
这样的日期向减,在oracle 10g中时能通过的并能得到数字类型的值的。
[解决办法]
已经测试通过了
select
(to_date(to_char(to_timestamp('2020-10-01','yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss')
-
to_date(to_char(to_timestamp('2010-10-01 12:22:22','yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss')
)*24*60*60
from dual;
结果
315617858
[解决办法]
转换成你的表信息
select
(to_date(to_char(T1,'yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss')
-
to_date(to_char(T2,'yyyy-mm-dd hh:mi:ss'),'yyyy-mm-dd hh:mi:ss')
)*24*60*60
from ezmonionline;
[解决办法]
[解决办法]
