Formateo de FECHA en el oracle

Tengo un campo de fecha en una tabla que contiene la fecha en formato dd-MMM-aa.

Quiero crear una función que obtenga esta fecha para verificar que no sea nula y luego cámbiela al formato aaaa / mm / dd

pero el problema es que Oracle no acepta la fecha de formato dd-MMM-yy como parámetro de entrada y dice: ¡Por favor, use el formato de fecha aaaa-MM-dd!

¿Cómo puedo cambiar primero el formato dd-MMM-yy a aaaa-MM-dd para que Oracle lo acepte como entrada y luego lo cambie a aaaa / mm / dd

: Utilice el formato de fecha aaaa-MM-dd !!!

Eso no está relacionado con un error de Oracle.

Tengo un campo de fecha en una tabla que contiene la fecha en formato dd-MMM-aa.

No, estás confundido. Oracle no almacena las fechas en el formato que ve. Lo almacena internamente en 7 bytes y cada byte almacena diferentes componentes del valor de fecha y hora .

Byte Description ---- ------------------------------------------------- 1 Century value but before storing it add 100 to it 2 Year and 100 is added to it before storing 3 Month 4 Day of the month 5 Hours but add 1 before storing it 6 Minutes but add 1 before storing it 7 Seconds but add 1 before storing it 

Si desea visualizar, use TO_CHAR con el FORMATO MODELO adecuado.

Al insertar, use TO_DATE con el FORMATO MODELO adecuado.

Lo que ve como un formato por defecto, es su configuración NLS específica de la configuración regional .

 SQL> select parameter, value from v$nls_parameters where parameter='NLS_DATE_FORMAT'; PARAMETER VALUE --------------- ---------------------------------------------------------------- NLS_DATE_FORMAT DD-MON-RR SQL> select sysdate from dual; SYSDATE --------- 03-FEB-15 SQL> select to_char(sysdate, 'mm/dd/yyyy hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'MM ------------------- 02/03/2015 17:59:42 SQL> 

Actualización sobre el formato MMM .

Por MMM si se refiere al nombre del mes de hasta tres caracteres, entonces use MON .