Soweit ich im Beispiel erkennen kann, ist die Ausgabe korrekt. Die nachfolgenden Nullen werden bei diesem Datentyp nicht ausgegeben. Die fehlenden Nullen würde ich über Zeichenkettenoperationen auf die erforderliche Stellenanzahl hinzufügen und die Zeichenkette wieder zusammensetzen.
Mir ist keine Funktion unter Oracle bekannt, die das nativ für den Datentyp TIMESTAMP tut. Prüfung auf Gleichheit zwischen Datum und TIMESTAMP funktionieren meist sowie nicht gut.
Danke für die Antwort erst einmal. Ich lese alle Spalten aus mehreren Tabellen aus und schreibe sie in eine .txt-Datei. Welches wie eine kleine Sicherheitskopie verwendet werden soll. Dabei versuche ich halt alles so zu übernehmen, so dass ich in der Textdatei die INSERT-Befehle mit den richtigen Ausdrücken habe. Und habe nur noch beim TIMESTAMP meinen Problem.
Die Formatierung habe ich überlesen. Das Konvertieren eines TIMESTAMPs in ein DATE ist nur indirekt möglich: SELECT TO_DATE (TO_CHAR (SYSTIMESTAMP, 'YYYY-MON-DD HH24:MI:SS'), 'DD.MM.YYYY HH24:MI:SS' ) AS my_date FROM DUAL also erst in eine Zeichenkette wandeln, danach zurück in das Datum wandeln. ACHTUNG: TIMESTAMP sieht zwar wie ein Datum aus, kann aber nie so unter Oracle direkt benutzt werden!! Der typische Einsatzfall ist ähnlich einer GUID-Spalte als Zeilenversion.
Die Lösung: if(columntypes[index] == 'TIMESTAMP'){ Date date = value text = date.format('dd.MM.yyyy hh:mm:ss') return ("to_date('${text}', 'dd.mm.yyyy hh24:mi:ss')") }
Dabei versuche ich halt alles so zu übernehmen, so dass ich in der Textdatei die INSERT-Befehle mit den richtigen Ausdrücken habe.
Und habe nur noch beim TIMESTAMP meinen Problem.