oracle中的java“System.nanoTime()”是否有任何等价物? 在java System.nanoTime()中返回类似“246193102011083”的内容。
答案 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都显示出微秒精度。