Python / Oracle / cx_Oracle с поправкой на год = 0

В настоящее время я работаю над некоторым кодом ETL для постепенной загрузки данных из исходной системы Oracle в среду анализа Postgresql с использованием Python в качестве клея.

Я использую cx_Oracle в качестве драйвера для вывода данных Oracle, но я сталкиваюсь с некоторыми странными проблемами с Oracle Date и Python datetime и year 0.

Насколько я понимаю, ни Oracle, ни Python не поддерживают год 0. Я выделил определенную строку и поле с оскорбительной датой:

SELECT CAR_RENTAL_DATE, EXTRACT(YEAR FROM CAR_RENTAL_DATE) FROM TRXNS_ALL WHERE TRX_ID = 50079327 

Вот результаты из CLI sqlplus:

 CAR_RENTA EXTRACT(YEARFROMCAR_RENTAL_DATE) --------- -------------------------------- 30-JUN-00 0 

Согласно этому сообщению, на самом деле можно создать Oracle Date с годом 0, но официально не поддерживается в документах: http://rwijk.blogspot.com/2008/10/year-zero.html

Проблема, с которой я сталкиваюсь, – это представление Python, которое cx_Oracle возвращает мне:

 cur.execute('select CAR_RENTAL_DATE, extract(year from CAR_RENTAL_DATE) FROM TRXNS_ALL where TRX_ID = 50079327') res = cur.fetchone() print repr(res[0]), type(res[0]) 

Это приводит к следующему:

 datetime.datetime(0, 6, 30, 0, 0) <type 'datetime.datetime'> 

Странно (но ожидаемо), создавая ту же дату и время Python, дает мне ошибку:

 dt = datetime.datetime(0, 6, 30, 0, 0) ValueError: year is out of range 

Когда я пытаюсь вставить это datetime в поле timestamp Postgresql с psycopg2, вставка завершается неудачно, как и ожидалось.

Что здесь происходит? Как Oracle и Python поддерживают год 0, несмотря на их документацию?

Каков хороший способ справиться с этим, помимо итерации над каждым значением кортежа, возвращаемым cx_Oracle для обнаружения и обработки year = 0?

Python - лучший язык программирования в мире.