ORA-00932:不一致的数据类型:预计INTERVAL DAY TO SECOND得到CHAR

Thu*_*ush 3 oracle timestamp date-arithmetic

SELECT COALESCE (
      (to_timestamp( '2014-09-22 16:00:00','yyyy/mm/dd HH24:MI:SS')
        -   ('2014-09-22   09:00:00' ,'yyyy/mm/dd HH24:MI:SS'))  
        - (to_timestamp( '2014-09-22 16:00:00','yyyy/mm/dd HH24:MI:SS')  
        - to_timestamp('2014-09-22 09:00:00.' ,'yyyy/mm/dd HH24:MI:SS')) 
       , '00:00') 
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

这是在postgres中工作,但它在oracle中不起作用.

rav*_*ary 9

看起来你正试图用TIMESTAMP做数学(+, - ).TIMESTAMP不喜欢这样.你应该把TIMESTAMP CAST到DATE:

而不是bla - blu(其中bla和blu是TIMESTAMP)

do
CAST (bla as DATE) - CAST (blu as DATE)
and you will get a NUMBER (multiply it by 3600 * 24 and you will turn it into seconds)
Run Code Online (Sandbox Code Playgroud)

但是你将丢失毫秒信息

检查此链接时间戳差异

这里有TIMESTAMP定义