Python 3 Timedelta溢出错误

2022-03-22 00:00:00 python python-3.x datetime django overflow

问题描述

我有一个大型数据库,正在将其加载到内存缓存中。我有一个流程可以做到这一点,每天迭代数据。

最近,此进程开始引发以下错误:

OverflowError: date value out of range

start_day = start_day - datetime.timedelta(days = 1)

这是在Ubuntu 14.04.5上的Python 3.4.3中运行的


解决方案

您已到达datetime.date.min,即1年1月1日:

>>> from datetime import date, timedelta
>>> date.min
datetime.date(1, 1, 1)
>>> date.min - timedelta(days=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: date value out of range

如果您从datetime.date.today()开始,那么您的代码需要736K多一点的步骤才能达到目标:

>>> date.today().toordinal()
736766

您的代码可能在某处有错误,减法太频繁。

相关文章