2009-03-12 3 views
1

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

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

ответ

5

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

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

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

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

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

+0

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

1

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

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

Лично я хотел бы, чтобы CMS записывал в эту таблицу атрибутов в стандартном формате, таком как «YYYY-MM-DD», а затем, какое бы то ни было задание, что в столбце DATE можно явно указать значение с помощью to_date (значение, «ГГГГ-ММ-ДД»), и у вас не будет никаких проблем.

-1

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

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

Смежные вопросы