Problemas con to_date

Les consulto por lo siguiente:
Tengo un proceso que actualiza las fechas de una tabla, que tienen el formato dd/mm/yyyy HH:MM:SS, y utilizo un to_date para convertir este campo (que es de fecha) a dd/mm/yyyy. Cuando utilizo esta función, por ejemplo, para el año 2007, la conversión coloca en su lugar el año 0007. Hice una prueba de la siguiente forma "SELECT SYSDATE AS FECHA, TO_DATE(SYSDATE, 'DD/MM/YYYY') AS FECHAFORMATEADA", y me devuelve fecha: 08/03/2007 09:21:55, fechaformateada: 08/03/0007 09:21:55.
La única forma de solucionar esto fue usar rrrr en vez de yyyy. ¿Alguien tiene idea de que puede estar pasando?
El motor es Oracle 9i sobre Unix.

1 respuesta

Respuesta
1
Normalmente cunado sale este problema es que en los procesos de migración de base de datos de anteriores versiones (sobre todo con el problema del cambio al año 2.000) muchos grababan fechas en formato (DD/MM/YY).
Por lo tanto, al hacer un cambio de versión, ORACLE lo tomo como Año 00YY.
- Si tienes este problema, sólo hay 2 soluciones en función de la volumetría de cambios, es decir si es más cómodo para ti el modificar el soft o los campos date de tu bb. Dd. :
Piensa también que si por casualidad grabas una fecha (sysdate) en una de esas columnas y haces una resta entre fecha TENDRÁS MUCHOS PROBLEMAS!
Yo de ti, lo mejor que haría es actualizar las fechas :
En lugar de trabajar con 'rrrr' que es algo que odio.
update table
set fecha = to_date( to_char(fecha, 'dd/mm/rrrr' ), 'dd/mm/yyyy' );
Pero eso lo dejo a tu elección.
Todo es problema de que antes del año 2000, en todas las aplicaciones se pedía el año con dos dígitos!
(Está la solución de indicar en el fichero 'init<sid>'. Ora que el formato por defecto es 'rrrr'. Pero creo que tendrías problemas en temas de ordenación de campos de fechas y otras operaciones!
He intentado localizar el programa que convertía automáticamente pero no lo localizo. De hecho, ya hace más de 7 años de este proceso.
TEN EN CUENTA : Todo proceso que te pasen a partir de ahora para columnas 'date' que sea con el año informado en 4 dígitos.
Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas