Тип datetime хранится в наносекундах с использованием 64-разрядного целого числа со знаком.
Диапазон, таким образом, составляет [2 ^ -63; 2 ^ 63 -1]. Используя 0 в качестве эпохи Unix (1970/01/01 00: 00: 00.0), вы можете увидеть, запустив этот код, что результат примерно равен 292 годам от 0 (эпоха Unix). Таким образом, максимумом является дата, представленная лидирующей 0
, за которой следует 63 1
Запустите этот код, чтобы доказать это сами.
max_int=2**63-1 # maximum integer
max_int/=10**9 # from nanoseconds to seconds
max_int/=86400 # from seconds to days
max_int/=365 # from days to years (suppose no leap years)
print(1970+max_int) # print the maximum year, with an error of days
РЕДАКТИРОВАТЬ: как написано в комментарии ниже, Бен, я не сообщил источник. здесь