2012-02-07 7 views
32

Devo eseguire alcuni inserimenti in un DB Oracle. Ho alcune date nel seguente formatoUtilizzo della funzione Oracle to_date per la stringa di data con millisecondi

'23.12.2011 13:01:001' 

In seguito la documentazione che ho scritto inserti to_date come segue:

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

che funziona correttamente. Ora ho date con millisecondi con il formato

'23.12.2011 13:01:001' 

Ho provato la seguente:

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

che non è corretto (fornisce un errore 01821. 00000 - "Formato data non riconosciuto").

Quale "stringa" dovrei usare per questo formato con millisecondi?

Grazie in anticipo!

+0

possibile duplicato di [String fino ad oggi in Oracle con millisecondi] (http: // stackoverflow.com/questions/1758219/string-to-date-in-oracle-with-milliseconds) –

risposta

54

Un Oracle DATE non memorizza i tempi con maggiore precisione di un secondo. Non è possibile memorizzare dati di precisione in millisecondi in una colonna DATE.

Le tue due opzioni sono a uno troncare la stringa dei millisecondi prima di convertirlo in un DATE, cioè

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

o per convertire la stringa in un TIMESTAMP che fa precisione sostegno millisecondo

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

TO_DATE supporta la conversione nel tipo di dati DATE, che non supporta i millisecondi. Se si desidera il supporto al millisecondo in Oracle, è necessario considerare il tipo di dati TIMESTAMP e la funzione TO_TIMESTAMP.

Spero che questo aiuti.

-2

È necessario modificare la classe data in data e ora.

String s=df.format(c.getTime()); 
java.util.Date parsedUtilDate = df.parse(s); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedUtilDate.getTime()); 
+3

Che cosa ha a che fare Java con Oracle PL/SQL? –

Problemi correlati