SYSDATE vs. SYSTIMESTAMP

Zur Ermittlung der Systemzeit gibt es in Oracle PL_SQL folgende Möglichkeiten

a) sysdate -> liefert die Systemzeit sekundengenau

b) systimestamp -> liefert die Systemzeit mit sekundenBRUCHTEILEN (unter Unix mehr Nachkommastellen als unter Windows)

Beispiele
select to_char(sysdate,'dd.mm.yyyy hh24:mm:ss') A from dual;

select to_char(sysdate,'dd.mm.yyyy hh24:mm:ss.ffffff') A from dual; => Fehler, siehe unten

select to_char(systimestamp,'dd.mm.yyyy hh24:mm:ss.ffffff') B from dual;


A                 
-------------------
21.12.2012 12:12:13
1 row selected.


select to_char(sysdate,'dd.mm.yyyy hh24:mm:ss.ffffff') A from dual
                       *
Error at line 1
ORA-01821: date format not recognized


B                                             
-----------------------------------------------
21.12.2012 12:12:14.975620975620975620        
1 row selected.



=> sehr praktisch für Logging-Tabellen ;-)

Hinweis:
Zum Berechnen der Differenz zwischen zwei timestamp-Variablen wird eine Variable vom Typ benötigt - siehe Bsp.:
ltimestamp_start       timestamp;
ltimestamp_stop        timestamp;
linterval_diff         interval day to second;


... dann klappt es auch mit der Berechnung...

Quelle für die Berechnung: http://jasonvogel.blogspot.de/2006/11/example-using-systimestamp-milliseconds.html
oder hier: http://psoug.org/reference/timestamp.html

Kommentare

Beliebte Posts aus diesem Blog

trunc(sysdate) - nette Spiele mit dem Datum

Zufallszahlen und -text generieren - DBMS_RANDOM

Laufzeiten umrechnen, Sekundenangaben lesbar darstellen