Вот что мне пришло в голову:
select date (date '0000-12-31' + interval '733973 days');
>> "2010-07-20"
или
select date (date '0000-12-31' + interval '1 days' * 733973);
>> "2010-07-20"
Это просто добавляет количество дней к дате 0000-12-31
.Он не использует дату 0001-01-01
, так как datetime.toordinal()
определен как 1
для этой даты, следовательно, смещение -1.
Из документов python
date.fromordinal (порядковый номер)
Возвращает дату, соответствующую пропелептическому григорианскому порядковому номеру, где 1 января года 1 имеет порядковый номер 1 ...
Редактировать:
Если дата 0000-31-12
не признана действительной датой, вы можете легко изменить выражение на что-то вроде:
select date (date '0001-01-01' + interval '733973 days' - interval '1 day');
или
select date (date '0001-01-01' + (interval '1 days' * (733973 - 1)));