sql >> Database >  >> RDS >> Oracle

Oracle-equivalent van java System.currentTimeMillis()?

De Java-functie retourneert het aantal milliseconden dat is verstreken sinds een vast moment in de tijd. Die tijd is middernacht op de eerste dag van 1970 UTC, d.w.z. het begin van de Unix-kloktijd.

De volgende functie doet hetzelfde voor PL/SQL. Het trekt de huidige tijdstempel af van het startpunt (waarbij ms=1). Het extraheert de verschillende tijdcomponenten en zet ze om in seconden. Ten slotte vermenigvuldigt het alles met 1000 om de waarde in milliseconden te krijgen:

create or replace function current_millisecs 
    return number 
is
    base_point constant timestamp := to_timestamp('01-JAN-1970 00:00:00.000');
    now constant timestamp := systimestamp AT TIME ZONE 'UTC' ;
begin
    return (
                  ((extract(day    from (now-base_point)))*86400)
                + ((extract(hour   from (now-base_point)))*3600)
                + ((extract(minute from (now-base_point)))*60)
                + ((extract(second from (now-base_point))))
           ) * 1000;
end;
/

Als u Java in de database hebt ingeschakeld, is het wellicht eenvoudiger om in plaats daarvan een Java Stored Procedure te maken:

create or replace function currentTimeMillis return number as
language java name 'java.lang.System.currentTimeMillis() return java.lang.Integer';
/

Vergelijking van de twee benaderingen:

SQL> select currentTimeMillis as JAVA
  2         , current_millisecs as PLSQL
  3         , currentTimeMillis - current_millisecs as DIFF
  4  from dual
  5  /

      JAVA      PLSQL       DIFF
---------- ---------- ----------
1.2738E+12 1.2738E+12          0

SQL>

(Mijn dank gaat uit naar Simon Nickerson, die de typfout in de vorige versie van mijn PL/SQL-functie ontdekte, die een abnormaal resultaat opleverde.)

Overigens, als je alleen geïnteresseerd bent in tijd tot op de centiseconde, Oracle heeft daar een ingebouwde functie voor:DBMS_UTILITY.GET_TIME() .



  1. Hoe te debuggen postgresql opgeslagen procedures?

  2. Verbinding maken met een MySQL-server via C++

  3. PHP PDO invoegen met Loop

  4. Schone installatie VestaCP