Pregunta

Sucede que tengo que conseguir una cita de una columna VARCHAR2 en el oráculo, pero es inconsistente en el formato. Algunos campos pueden tener '12/31/2009', '2009/12/32 00:00:00' otros. ¿Hay alguna construcción estándar que podría utilizar, por lo que no tengo que pasar por

begin
  to_date(date, mask1)
exception
  begin
    to_date(date,mask2)
  exception
    ..
  end
end

bloques o análisis de cadena de fecha antes de determinar la máscara correcta? Algo así como to_date(date, mask1,mask2,..)?

¿Fue útil?

Solución

No, pero algunos formatos de fecha de Oracle son "perdón" de las diferencias por ejemplo.

SQL> select to_date('2009.12.31','YYYY/MM/DD') from dual;

TO_DATE('20
-----------
31-DEC-2009

Así que puede reducir la cantidad de casos que hay que manejar. Le sugiero que escriba una función a lo largo de las líneas que estaban pensando, por lo que puede ser llamado desde todos los lugares de su código en el que necesita para manejar fechas como esta.

Otros consejos

Es necesario enumerar todas las posibles formatos que desea apoyar - recordar que algunos son ambiguas (por ejemplo, es "10-11-2009" 10 nov ó 11 Oct?) Lo que el código tendrá que favorecer a uno sobre el otro.

Como Tony ha dicho, algunos formatos aceptará una variedad de insumos, principalmente en lo que respecta a análisis de caracteres de separación y los bits que faltan (por ejemplo, 'HH24 DD-MON-YYYY: MI: SS' coincidirá con la fecha de 31 dec-2009 10:30:00' , '31 / dEC / 2009 10:30' , '31 dec 2009' ).

Además de estas simplificaciones, vas a necesitar una serie de BEGIN (formato1) EXCEPCIÓN CUANDO OTROS luego comenzar (formato2) EXCEPCIÓN CUANDO OTROS luego comenzar ....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top