sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo formatear solo aquellos registros para los que no se arroja ORA-01843?

Usa un CASE expresión que verifica el estado de la columna y solo intenta analizar condicionalmente como una fecha válida:

SELECT
    MyColumn,
    CASE WHEN REGEXP_LIKE(MyColumn, '^\s*\d\d\d\d\d\d\s*$')
         THEN TO_CHAR(TO_DATE(TRIM(MyColumn), 'YYMMDD'), 'MM/DD/YYYY')
         ELSE MyColumn END AS new_col
FROM MyTable

Pero como comentario general, debe evitar almacenar información de fechas en sus tablas como texto. Ahora está viendo una de las razones para evitar esto.