Подтверждение дат Oracle в Python

1

Наш Python CMS хранит некоторые значения даты в общем столбце varchar таблицы атрибутов. Некоторые из этих дат позже переносятся в таблицу с фактическим столбцом даты. Если пользователь CMS ввел недопустимую дату, он не попадает до переноса, когда запрос завершается с ошибкой "Недопустимая строковая дата".

Как я могу использовать Python, чтобы убедиться, что все даты, введенные в нашу CMS, являются допустимыми представлениями даты строки Oracle?

Теги:
validation

3 ответа

5
Лучший ответ

Как я могу использовать Python, чтобы убедиться, что все даты, введенные в нашу CMS, являются допустимыми представлениями даты строки Oracle?

Я немного изменил бы подход. Попросите Python проанализировать исходный ввод даты как можно более прощай, а затем выведите дату в хорошо известном представлении.

dateutil либеральный парсер может быть хорошим местом для начала:

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

Я не уверен, что "% d-% b-% y" на самом деле все еще является правильным форматом даты для Oracle, но, вероятно, это будет нечто похожее, в идеале, с четырьмя цифрами и без зависимости от имен месяцев. (Trap:.% Ь Локальнозависимый так может вернуть нежелательные названия месяцев на неанглийской ОС) Возможно "STRFTIME („% Y-% m-% d“)", а затем "TO_DATE (...," YYYY -MM-DD ') "на конце Oracle необходимо?

  • 0
    Я бы использовал «% d-% b-% Y» (четыре цифры года), но вы правы относительно зависимости от локали. +1 за предложение отличного подхода.
1

Формат строки даты, что Oracle признает в качестве даты является настраиваемым свойством базы данных и как таковое оно считается дурным тоном полагаться на неявном преобразовании строк в даты.

Обычно формат дат в формате "DD-MON-YYYY", но вы не всегда можете полагаться на то, что он настроен таким образом.

Лично я бы КМВ написать эту таблицу "атрибут" в стандартном формате, как "YYYY-MM-DD", а затем в зависимости от того работа движется, что в столбце DATE можно явно привести значение с to_date (значение ' YYYY-MM-DD '), и у вас не будет никаких проблем.

0

Подтвердите как можно раньше. Почему вы не сохраняете даты как даты в вашей CMS Python?

Трудно узнать, какая дата имеет строку типа '03 -04-2008 '. Это 3 апреля 2008 года или 4 марта 2008 года? Американцы скажут 4 марта 2008 года, но голландский человек скажет 3 апреля 2008 года.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню