Python 3 Timedelta溢出错误
问题描述
我有一个大型数据库,正在将其加载到内存缓存中。我有一个流程可以做到这一点,每天迭代数据。
最近,此进程开始引发以下错误:
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
您的代码可能在某处有错误,减法太频繁。
相关文章