2013-11-21 32 views
1

我想以sysatdate和utcdate之间的整数获得diffenece在几分钟内。这不起作用:Oracle;两个日期,在几分钟内的差异

select ROUND((sysdate-SYS_EXTRACT_UTC(SYSTIMESTAMP))*1440,0) from dual 

它给人的错误消息: ORA-00932:不一致的数据类型:预期数量得到INTERVAL DAY TO SECOND 脚本线21,语句行1列52

什么做?非常感谢!

回答

1

试试这个。 YOu必须将systimestamp数据类型转换为日期类型,然后才能在两个日期进行数学运算。也许有一个更优雅的解决方案,但这似乎工作。

SELECT ROUND ( ( SYSDATE 
       - TO_DATE (TO_CHAR (SYS_EXTRACT_UTC (SYSTIMESTAMP), 
            'YYYY-MON-DD HH24:MI:SS' 
            ), 
          'YYYY-MON-DD HH24:MI:SS' 
          ) 
       ) 
       * 1440, 
       0 
      ) 
    FROM DUAL 
+0

现在看起来非常好,谢谢! –

+2

可以简化一点。 '(sysdate - cast(SYS_EXTRACT_UTC(SYSTIMESTAMP)as date))* 1440'。在这种情况下,实际上不需要进行*来回*转换。 –

+0

更清洁的感觉。 – OldProgrammer

相关问题