PDA

View Full Version : %timestamp()



Xanas
04-09-09, 12:14
Hallo,

der %timestamp() in RPGLE liefert an den letzten 3 Stellen immer 0 zurück
SQL dagegen liefert den Wert exact incl. der 3 letzten Stellen zurück. Ich habe auch schon die ftime() und gettimeofday() ausprobiert, aber die liefer auch immer nur 0 an den letzen 3 Stellen.
Gibt es noch ne andere möglichkleit außer das per SQL zu lösen?

Gruß
Xanas

B.Hauser
04-09-09, 12:24
Ob es eine andere Lösung gibt? Keine Ahnung!
Aber was spricht denn gegen SQL?


Exec SQL Set :MyTimeStp = Current_Timestamp;

Birgitta

Xanas
04-09-09, 12:28
weil dann das messen länger dauert als das was ich messen will :rolleyes:
Ich will dioch einfach nur den aktuellen timestamp :(

BenderD
04-09-09, 14:01
die C function gettimeofday ist dein Freund, meine mich erinnern zu können, dass ich da mal einen Artikle zu in MM geschrieben habe.

D*B

Fuerchau
04-09-09, 14:20
"gettimeofday" liefert die genau Zeit in Sekunden seit 1.1.1970 GMT sowie Microsekunden.
Damit sind Messungen sehr wohl möglich.

Willst du das dann in einen Timestamp umwandeln, musst du das allerdings selber machen, da die Builtin-Funktion das leider nicht liefert.

MyTimestamp = %timestamp(%date('1970-01-01')) + %seconds(tv_sec) + %mseconds(tv_usec);

Wenn du die lokale Zeit dann haben willst, machst du das mit "localtime" oder addierst selber den Systemwert QUTCOFFSET dazu.

Wenn dir das zu kompliziert ist, kannst du auch das API Convert Date and Time Format (QWCCVTDT) API (http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/qwccvtdt.htm) verwenden.

Xanas
09-09-09, 11:42
Danke schon mal. Den Weg zur Localtime spare ich mir mal, weil ich eh nur die Differenz von 2 Timestamps haben möchte.

Gruß
Xanas