我有一个 MySQL 数据库,它的日期时间值被任意移动以用于去识别目的。因此,例如,我的日期值为datetime.datetime(2644, 1, 17, 0, 0)
. 如果我用 pymysql 或 Pandas 查询这些值,我会得到一个很好的 datetime 对象。但是,如果我使用 Ibis 构建查询,我会失败,因为日期超出了datetime64[ns]
Ibis 在转换为 DataFrame 时使用的数据类型可以表示的数据范围。
所以
---------------------------------------------------------------------------
OutOfBoundsDatetime Traceback (most recent call last)
~/opt/anaconda3/envs/clinicalnlp/lib/python3.7/site-packages/pandas/core/arrays/datetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
2084 try:
-> 2085 values, tz_parsed = conversion.datetime_to_datetime64(data)
2086 # If tzaware, these values represent unix timestamps, so we
pandas/_libs/tslibs/conversion.pyx in pandas._libs.tslibs.conversion.datetime_to_datetime64()
pandas/_libs/tslibs/np_datetime.pyx in pandas._libs.tslibs.np_datetime.check_dts_bounds()
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 2644-01-17 06:48:00
浏览 Ibis 源代码,似乎应该可以将 datetime64 时间单位从纳秒到微秒配置,以便日期在允许的范围内,但我无法弄清楚如何在 Ibis 中进行此配置。
任何建议将不胜感激。