ошибка psycopg2 при чтении дат вне диапазона

#python #timestamp #psycopg2

#python #временная метка #psycopg2

Вопрос:

Я получаю

Ошибка значения: год находится вне диапазона

Когда мой psycopg2 курсор.fetchall обнаруживает значение даты со странным годом, например 0001.

Есть ли какой-либо способ сделать psycopg2 совместимым с любым годом и избежать этого исключения?

Ответ №1:

расширяясь к ответу пиро

 DATE2STR = psycopg2.extensions.new_type(
    psycopg2.extensions.DATE.values,
    'DATE2STR',
    lambda value, curs:
        str(value) if value is not None else None)

psycopg2.extensions.register_type(DATE2STR)
  

Ответ №2:

Вы можете написать свой собственный typecaster и возвращать date.min, если год меньше того, который поддерживает python. Ознакомьтесь с этим часто задаваемым вопросом (о возврате float вместо Decimal для numeric данных) и используйте его в качестве отправной точки, чтобы настроить его для вашего типа данных и ваших требований.