2012-02-07 372 views
32

Tengo que realizar algunas inserciones en Oracle DB. Tengo algunas fechas en el siguiente formatoUso de la función Oracle to_date para cadena de fecha con milisegundos

'23.12.2011 13:01:001' 

Siguiendo la documentación que escribí insertos to_date de la siguiente manera:

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

que funciona correctamente. Ahora tengo fechas con milisegundos con el formato

'23.12.2011 13:01:001' 

He intentado lo siguiente:

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

lo cual es incorrecto (entrega un error 01821. 00000 - "formato de fecha no reconocidos").

¿Qué "Cadena" debo usar para este formato con milisegundos?

¡Gracias de antemano!

+0

posible duplicado de [cadena hasta la fecha en Oracle con milisegundos] (http: // stackoverflow.com/questions/1758219/string-to-date-in-oracle-with-milliseconds) –

Respuesta

54

Un Oracle DATE no almacena los tiempos con más precisión que un segundo. No puede almacenar datos de precisión de milisegundos en una columna DATE.

Sus dos opciones son para truncar la cadena de los milisegundos antes de convertirlo en un DATE, es decir

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

o para convertir la cadena en un TIMESTAMP que hace la precisión de apoyo milisegundos

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

TO_DATE admite la conversión a tipo de datos DATE, que no admite milisegundos. Si desea soporte de milisegundos en Oracle, debe mirar el tipo de datos TIMESTAMP y la función TO_TIMESTAMP.

Espero que ayude.

-2

Tienes que cambiar la clase de fecha por la marca de tiempo.

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

¿Qué tiene que ver Java con Oracle PL/SQL? –

Cuestiones relacionadas