2017-10-18 2 views
2

Ich möchte Millisekunden zu meinem Timestamp-Objekt hinzufügen. Zum Beispiel muss ich den Timestamp-Wert um 25 Millisekunden erhöhen.Oracle: Hinzufügen von Millisekunden zu meinem Timestamp-Objekt

Ich nahm dies als Beispiel

select to_char(systimestamp,'dd-mm-yyyy hh24:mi:ss.FF') as ts 
, to_timestamp(to_char(sysdate,'dd-mm-yyyy hh24:mi:ss.')||to_char(to_number(to_char(systimestamp,'FF')) + 250) 
,'dd-mm-yyyy hh24:mi:ss.FF') as ts_1 
from dual; 

es funktioniert und erhöht Millisekunden. Aber es wirkt sich nicht auf das Sekundenfeld aus. Wenn wir beispielsweise 1000 Millisekunden hinzufügen, sollte das Sekundenfeld idealerweise inkrementiert werden. Wir wissen, dass es einen Weg gibt, einen Zeitstempel in Millisekunden umzuwandeln. Gibt es eine Möglichkeit, die Millisekunden zurück in Zeitstempel zu konvertieren? Oder wenn es irgendwie möglich ist, dem Zeitstempelobjekt Millisekunden hinzuzufügen, die die Änderungen in Sekunden wiedergeben?

Antwort

4

Sie Zeit, um einen Add Zeitstempel durch Hinzufügen eines Intervalls. Intervalle können nur bis zu Sekunden gehen, aber ein Intervall von 0,001 Sekunden ist ein Millisekunden-Intervall, das Sie mit dem gewünschten Wert multiplizieren können. Zum Beispiel:

select systimestamp + interval '0.001' second * :millisecs from dual; 
2

Verwenden eines Intervall literal:

SELECT SYSTIMESTAMP + INTERVAL '0.025' SECOND 
FROM DUAL 

oder dynamisch ein Intervall erstellen mit NUMTODSINTERVAL:

SELECT SYSTIMESTAMP + NUMTODSINTERVAL(25/1000, 'SECOND') 
FROM DUAL 

oder mit einer Bindevariable:

SELECT SYSTIMESTAMP + NUMTODSINTERVAL(:milliseconds/1000, 'SECOND') 
FROM DUAL 
Verwandte Themen