yyyy to_datetime to_date to_char formato fecha ejemplos oracle to-date

to_datetime - to_date oracle



Usar la funciĆ³n Oracle to_date para cadena de fecha con milisegundos (4)

Tengo que realizar algunas inserciones en una base de datos Oracle. Tengo algunas fechas en el siguiente formato

''23.12.2011 13:01:001''

Siguiendo la documentación, escribí las inserciones 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'')

que es incorrecto (entrega un error 01821. 00000 - "formato de fecha no reconocido").

¿Qué "Cadena" debería usar para este formato con milisegundos?

¡Gracias por adelantado!



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.


Tienes que cambiar la clase de fecha a 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());


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

Sus dos opciones son truncar la cadena de los milisegundos antes de convertirla a 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 admite precisión en milisegundos

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