You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已转为字符串,Dask DataFrame仍抛出OutOfBoundsDatetime错误求助

解决Dask读取SQL表时的OutOfBoundsDatetime异常

问题原因

numpy的datetime64[ns]类型时间范围上限为2262-04-11,而你的表中存在9999-12-31 23:59:59这类超出范围的日期。Dask在compute()阶段会默认将SQL日期列解析为datetime64[ns],你后续转字符串的操作属于延迟计算步骤,无法覆盖前期的解析逻辑,因此依然触发报错。

解决方案

方案1:读取时直接指定列类型为字符串

在read_sql_table中通过dtype参数指定目标日期列以字符串类型读取,从根源避免日期解析:

ddf = read_sql_table(
    table_name='TABLE_NAME',
    con=conn,
    index_col='index',
    dtype={'transaction_end_date': str}
)
ddf.compute()

方案2:通过SQL查询转换日期为字符串

直接在SQL语句中将日期列转为字符串后读取,绕过Dask的自动解析逻辑:

query = "SELECT index, CAST(transaction_end_date AS VARCHAR) AS transaction_end_date FROM TABLE_NAME"
ddf = read_sql_query(query, con=conn, index_col='index')
ddf.compute()

方案3:用object类型存储(需后续日期操作时)

如果需要保留日期操作能力,可指定列类型为object,存储原始日期对象(需确保SQL驱动支持返回宽范围日期):

ddf = read_sql_table(
    table_name='TABLE_NAME',
    con=conn,
    index_col='index',
    dtype={'transaction_end_date': object}
)
# 后续可手动转换为pandas支持宽范围的日期类型(如DatetimeTZDtype)

内容的提问来源于stack exchange,提问作者rams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:05:04