【问题标题】:Format Python timestamp for Teradata DB table为 Teradata DB 表格式化 Python 时间戳
【发布时间】:2019-07-09 00:12:29
【问题描述】:

我正在使用具有时间戳列的 Teradata 表:TIMESTAMP(6),其数据如下所示:

2/14/2019 13:09:51.210000

目前我有一个 Python 时间变量,我想通过 SQL 将它发送到 Teradata 表中,如下所示:

from datetime import datetime

time = datetime.now().strftime("%m/%d/%Y %H:%M:%S")

02/14/2019 13:23:24

如何重新格式化以正确插入?它出错了:

teradata.api.DatabaseError: (6760, '[22008] [Teradata][ODBC Teradata Driver][Teradata Database](-6760)Invalid timestamp.')

我尝试使用与 Teradata 时间戳列相同的格式:

time = datetime.now().strftime("%mm/%dd/%YYYY %HH24:%MI:%SS")

同样的错误信息

谢谢

【问题讨论】:

  • m-d-y 可能是客户端格式,请尝试使用YYYY-MM-DD HH:MI:SS
  • @dnoeth 谢谢,但不幸的是,这也不起作用。同样的错误。
  • 然后尝试按原样传递字符串并应用 Teradata 函数:To_Timestamp('02/14/2019 13:23:24', 'mm/dd/yyyy hh24:mi:ss') 或切换到标准 SQL 时间戳文字:TIMESTAMP 'yyyy-mm-dd hh:mi:ss

标签: python datetime teradata


【解决方案1】:

想通了。结果与时间戳无关,我不得不重新格式化它正在读取的 DataFrame 列。更改数据类型修复了它:

final_result_set['RECORD_INSERTED'] = pd.to_datetime(final_result_set['RECORD_INSERTED'])

现在,当通过 SQL 循环和插入时,以下内容可以很好地填充“RECORD_INSERTED”:

time = datetime.now().strftime("%m/%d/%Y %H:%M:%S")

抱歉给您带来了困扰

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 2012-02-17
    • 2019-02-17
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多