2

我继承的一些代码使用 Python 的 psycopg2 模块从 Postgres 数据库查询返回 mxDateTime 对象。我猜这种行为是出于历史原因,但想知道是否还有其他解释。鉴于我已经通过我继承的大型库获得了 mxDateTime 依赖项,那么在对这些日期进行操作之前转换为内置的 datetime 数据类型有什么好处吗?

4

1 回答 1

2

有很大的理由不改变它,这不是历史性的。内置 python 时间戳通常只有 32 位。

Postgresqls 时间戳:

最小值 4713 BC

最大值:5874897 AD

http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-DATETIME-TABLE

蟒蛇:

类方法 date.fromtimestamp(timestamp)¶

... 这通常被限制在从 1970 年到 2038 年的年份。请注意,在时间戳概念中包含闰秒的非 POSIX 系统上,闰秒会被 fromtimestamp() 忽略。

http://docs.python.org/library/datetime.html#datetime.date.fromtimestamp

在带有 Python 2.5 的 Windows 7 上:

>>>> date.fromtimestamp(0)
datetime.date(1969, 12, 31)
>>> date.fromtimestamp(-1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: timestamp out of range for platform localtime() function
于 2010-12-22T21:05:44.220 回答