Los datos en COL1 están en dd-mon-yy
No, no es. Una DATE
la columna no tener cualquier formato. Solo se convierte (implícitamente) a esa representación por su cliente SQL cuando lo muestra.
Si COL1 es realmente un DATE
columna usando to_date()
en él es inútil porque to_date()
convierte una cadena en una FECHA.
Solo necesitas to_char(), nada más:
SELECT TO_CHAR(col1, 'mm/dd/yyyy')
FROM TABLE1
Lo que sucede en tu caso es que llamar a to_date()
convierte el DATE
en un valor de carácter (aplicando el formato NLS predeterminado) y luego volviéndolo a convertir en una FECHA. Debido a esta doble conversión implícita, parte de la información se pierde en el camino.
Editar
Así que cometiste ese gran error al almacenar una FECHA en una columna de caracteres. Y es por eso que tienes los problemas ahora.
La mejor solución (y para ser honesto:la única sensata) es convertir esa columna en una DATE
. Luego, puede convertir los valores a cualquier representación que desee sin preocuparse por la conversión implícita del tipo de datos.
Pero lo más probable es que la respuesta sea "Heredé este modelo, tengo que afrontarlo " (siempre lo es, aparentemente nadie es responsable de elegir el tipo de datos incorrecto), entonces necesita usar RR
en lugar de YY
:
SELECT TO_CHAR(TO_DATE(COL1,'dd-mm-rr'), 'mm/dd/yyyy')
FROM TABLE1
debería hacer el truco. Tenga en cuenta que también cambié mon
a mm
como su ejemplo es 27-11-89
que tiene un número para el mes, no una "palabra" (como NOV )
Para obtener más detalles, consulte el manual:http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215