Oracle等效于java的System.nanoTime()

时间:2017-09-15 09:47:06

标签: java oracle

oracle中的java“System.nanoTime()”是否有任何等价物? 在java System.nanoTime()中返回类似“246193102011083”的内容。

1 个答案:

答案 0 :(得分:2)

您可以使用:

SELECT SYSTIMESTAMP(9) FROM DUAL;

注意 - 在Solaris盒子上进行测试时,我只能看到微秒精度;时间戳的最后3位数似乎始终为000。在Windows框中,我只能看到毫秒精度,因此您获得的准确度可能取决于操作系统(或其他因素)。

如果你想要它从一个纪元(例如1970-01-01)纳米秒,那么:

SELECT   EXTRACT( DAY    FROM time ) * 24 * 60 * 60 * 1e9
       + EXTRACT( HOUR   FROM time )      * 60 * 60 * 1e9
       + EXTRACT( MINUTE FROM time )           * 60 * 1e9
       + EXTRACT( SECOND FROM time )                * 1e9 AS nanotime
FROM ( SELECT SYSTIMESTAMP(9) - TIMESTAMP '1970-01-01 00:00:00 UTC' AS time FROM DUAL );

你也可以使用:

CREATE FUNCTION nanotime RETURN NUMBER
  AS LANGUAGE JAVA NAME 'java.lang.System.nanoTime() return long';
/

SELECT nanotime() FROM DUAL;

注意 - 在测试时,Solaris和Windows都显示出微秒精度。