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!
Puede probar este formato SS.FF
durante milisegundos:
yyyy-mm-dd HH:MI:SS.FF
Para más detalles:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm
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'' )