2017-09-15 21 views
2

Javaの "System.nanoTime()"に相当するものはありますか? java System.nanoTime()では、 "246193102011083"のようなものが返されます。javaのSystem.nanoTime()に相当する

+1

関連:https://stackoverflow.com/questions/2824710/oracle-equaival-of-java-system-currenttimemillis –

+1

https://stackoverflow.com/a/2826515/180100とhttps://stackoverflow.com/a/5318211/180100 –

+0

これはできないということですか? – TomJava

答えて

2

あなたは使用することができます。

SELECT SYSTIMESTAMP(9) FROM DUAL; 

注 - Solarisのボックスのテストで私はマイクロ秒の精度を見ることができました。タイムスタンプの最後の3桁は常に000であるように見えます。 Windowsのボックスでは、ミリ秒精度しか見ることができないため、得られる精度はOS(またはその他の要因)に依存する可能性があります。

あなたはエポック(例えば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は、私がテストしたときにマイクロ秒精度を与えるように見えます。

+0

しかし、たびに私は最後にトリプルゼロを見る。それはマイクロ秒の精度しか持たないということですか?例: "1505470076941452000" – TomJava

+0

明らかにちょうどマイクロ秒です。 –

関連する問題