Aquí podría ser tu PUBLICIDAD


Validar fechas de Oracle en Python

votos
1

Nuestro Python CMS almacena algunos valores de fecha en una columna varchar de la tabla genérica de atributos . Algunas de estas fechas se trasladan posteriormente a una tabla con una columna de fecha real . Si el usuario de CMS ingresó una fecha no válida, no se detecta hasta la migración, cuando la consulta falla con un error de Fecha de cadena no válida.

¿Cómo puedo usar Python para asegurarme de que todas las fechas introducidas en nuestro CMS sean representaciones válidas de Oracle string date?

Publicado el 12/03/2009 a las 19:41
fuente por usuario Max Cantor
En otros idiomas...        العربية       

3 respuestas

votos
5

¿Cómo puedo usar Python para asegurarme de que todas las fechas introducidas en nuestro CMS sean representaciones válidas de Oracle string date?

Cambiaría el enfoque un poco. Haga que Python analice la entrada de la fecha original de la manera más indulgente posible, luego imprima la fecha en una representación conocida.

El analizador liberal de dateutil puede ser un buen lugar para comenzar:

import dateutil.parser
d= dateutil.parser.parse('1/2/2003')
d.strftime('%d-%b-%y')

No estoy seguro de que '% d-% b-% y' sea en realidad el formato de fecha correcto para Oracle, pero probablemente sea algo similar, idealmente con años de cuatro dígitos y sin depender de los nombres de los meses. (Trampa:% b depende de la configuración regional, por lo que puede devolver nombres de mes no deseados en un sistema operativo que no está en inglés.) Quizás "strftime ('% Y-% m-% d')" seguido de "TO_DATE (..., 'YYYY -MM-DD ') "al final de Oracle es necesario?

Respondida el 12/03/2009 a las 08:03
fuente por usuario bobince


Aquí podría ser tu PUBLICIDAD


votos
1

El formato de una cadena de fecha que Oracle reconoce como una fecha es una propiedad configurable de la base de datos y, como tal, se considera una forma incorrecta de confiar en las conversiones implícitas de cadenas a fechas.

Normalmente, el formato de las fechas de Oracle es 'DD-MON-YYYY', pero no siempre se puede confiar en que se configure de esa manera.

Personalmente, quisiera que el CMS escriba en esta tabla de "atributos" en un formato estándar como 'AAAA-MM-DD', y luego, cualquiera que sea el trabajo que se mueva a una columna FECHA, puede emitir explícitamente el valor con to_date (value, 'YYYY-MM -DD ​​') y no tendrás ningún problema.

Respondida el 12/03/2009 a las 08:18
fuente por usuario kurosch

votos
-1

Validar lo antes posible. ¿Por qué no almacena fechas como fechas en su Python CMS?

Es difícil saber en qué fecha está una cadena como '03 -04-2008 '. ¿Es el 3 de abril de 2008 o el 4 de marzo de 2008? Un estadounidense dirá el 4 de marzo de 2008, pero un holandés dirá el 3 de abril de 2008.

Respondida el 12/03/2009 a las 08:33
fuente por usuario tuinstoel