Oracle-Date in einen Unix-Timestamp wandeln
03.04.2013
- Frage
- Wie wandelt man einen Oracle-Timestamp in einen (aus Unix bekannten) Zeitstempel als Long in Millisekunden seit 01.01.1970 um?
- Antwort
- Mit z.B. tsToUnixMS(), wie in select systimestamp, tsToUnixMS(systimestamp) as ms from dual; Dabei wird aus z.B. "23-OCT-07 11.31.26.777834 AM +02:00" der Long-Wert "1193139086777". Ist kein tsToUnixMS() zur Hand? Einfach selbst definieren:
CREATE OR REPLACE FUNCTION tsToUnixMS(datets in timestamp) RETURN number
IS
datum date := cast (datets as date);
BEGIN
return trunc(to_char(datets, '.FF') + 1000 *
(24*60*60 * (datum - to_date('19700101', 'yyyymmddhh24miss'))));
END;