it-swarm.com.de

Verwenden der Oracle to_date-Funktion für Datumszeichenfolgen mit Millisekunden

Ich muss einige Einfügungen in eine Oracle-Datenbank durchführen. Ich habe einige Termine Im folgenden Format

'23.12.2011 13:01:001'

Der Dokumentation folgend habe ich die Einfügungen to_date wie folgt geschrieben:

to_date('23.12.2011 13:01:01', 'DD.MM.YYYY HH24:MI:SS')

was richtig funktioniert. Nun habe ich Datumsangaben mit Millisekunden im Format

'23.12.2011 13:01:001'

Ich habe folgendes versucht:

to_date('23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3')

was falsch ist (liefert einen Fehler 01821. 00000 - "Datumsformat nicht erkannt").

Welchen "String" sollte ich mit Millisekunden für dieses Format verwenden?

Danke im Voraus!

39
Luixv

Ein Oracle DATE speichert Zeiten nicht genauer als eine Sekunde. Sie können keine Millisekunden-Präzisionsdaten in einer DATE-Spalte speichern.

Sie können entweder die Zeichenfolge der Millisekunden abschneiden, bevor Sie sie in eine DATE-Datei konvertieren, d. H. 

to_date( substr('23.12.2011 13:01:001', 1, 19), 'DD.MM.YYYY HH24:MI:SS' )

oder um den String in ein TIMESTAMP zu konvertieren, das Millisekundengenauigkeit unterstützt

to_timestamp( '23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3' )
68
Justin Cave

TO_DATE unterstützt die Konvertierung in den Datentyp DATE, der keine Millisekunden unterstützt. Wenn Sie Millisekunden-Unterstützung in Oracle wünschen, sollten Sie den TIMESTAMP-Datentyp und die TO_TIMESTAMP-Funktion betrachten.

Hoffentlich hilft das.

9
Mark J. Bobak

Sie können dieses Format SS.FF für Millisekunden ausprobieren:

yyyy-mm-dd HH:MI:SS.FF

Für mehr Details:
https://docs.Oracle.com/cd/B19306_01/server.102/b14200/functions193.htm

5
dipti

Für dreistellige Millisekunden:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF3')

Für sechsstellige Millisekunden:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF'),
1
SANKAR