100分,timestamp相减用于trunc函数提示“数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND”

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,半天没调通,谢谢大虾!!!!!!!!!!!!!!!

[解决办法]

探讨
例: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
[解决办法]
探讨
网上许多教程将timestamp相减后的结果直接用于加减乘除计算,但我一用就提示

数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND

[解决办法]
探讨
我直接用mod(T1 + 24*3600, 86400)为什么说是无效数字呢?

[解决办法]
SQL code
select trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))*24*60*60from ezMoniOnline where id=1
[解决办法]
探讨
谢谢!我重启一下服务器试一下。

请问这个例子
http://www.itmop.com/network/sql/oracle/08046587.html

中的trunc(86400*(date2-date1))是否可行?

[解决办法]
trunc 函数用的不对,timestamp类型相减后得到的不是数字类型的值!
[解决办法]
select to_timestamp('20100908','yyyymmdd') - to_timestamp('20100907','yyyymmdd') from dual; 

得到的不是数字,是包含 天、时、分、秒的一个结果,从中截取可以得到天、时、分、秒。
[解决办法]
貌似不能得到的。数据类型不一致。
[解决办法]
探讨
例:select trunc(T2-T1) from ezMoniOnline where id=1

提示:数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND


没用过oracle,半天没调通,谢谢大虾!!!!!!!!!!!!!!!

[解决办法]
探讨
引用:
例:select trunc(T2-T1) from ezMoniOnline where id=1

提示:数据类型不一致: 应为 NUMBER, 但却获得 INTERVAL DAY TO SECOND


没用过oracle,半天没调通,谢谢大虾!!!!!!!!!!!!!!!


SQL code




select (T2-T……

[解决办法]
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;

[解决办法]
探讨
已经测试通过了
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:……

[解决办法]
探讨
SQL code

select trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))*24*60*60
from ezMoniOnline where id=1