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

Teradata不接受pandas日期变量,执行SQL查询报无效日期错误

Teradata传入pandas生成日期参数报错22008的解决方法

报错22008的核心原因是Teradata数据库解析你传入的日期字符串时,和默认的日期识别格式不匹配,无法将你传入的YYYY-MM-DD格式字符串识别为合法日期类型。

  • 方法1:SQL中显式指定日期参数的格式
    不用修改Python侧的日期生成逻辑,只需要调整查询语句中的WHERE条件,通过CAST关键字明确告诉Teradata你传入的字符串格式:
    tran = '''SELECT TRAN.ACCOUNT_NUMBER,
                    TRAN.DATE
    from TRANSACTION TABLE TRAN
    where TRAN.DATE >= CAST(? AS DATE FORMAT 'YYYY-MM-DD')
       AND TRAN.DATE < CAST(? AS DATE FORMAT 'YYYY-MM-DD')
       '''
    
  • 方法2:调整Python侧输出的日期字符串格式为Teradata默认格式
    先执行简单查询确认你的Teradata实例默认日期格式:SELECT CURRENT_DATE,根据返回结果调整strftime的格式参数,比如默认格式为YYYY/MM/DD的话,修改日期生成代码:
    date_from_1 = pd.to_datetime('2021-09-29').strftime('%Y/%m/%d')
    date_to_1 = pd.to_datetime('2021-10-30').strftime('%Y/%m/%d')
    
  • 方法3:直接传datetime对象而非字符串
    不用手动将datetime转成字符串,Teradata ODBC驱动会自动适配datetime类型的参数,完全规避字符串解析错误。如果遇到pandas Timestamp类型适配问题,可以转成Python原生datetime:
    date_from_1 = pd.to_datetime('2021-09-29').to_pydatetime()
    date_to_1 = pd.to_datetime('2021-10-30').to_pydatetime()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:09