日期问题 - python 到 oracle sql

Date issue - python to oracle sql

我有一个 run_dt 在创建 table 时出现问题,列数据类型自行更改为 Char。

print(execution_dt)
2020-10-05 14:24:25.352317    

run_dt= execution_dt.date()


print(run_dt)
2020-10-05

run_dt=str(run_dt)
print(run_dt)
2020-10-05

type(run_dt)
<class 'str'>

我有 Oracle 数据库作为后端,python 用于脚本。

cursor.execute(f'''create table taxes
select age,
   name,
   '{run_dt}' as max_upload_date,
    from Employee a left outer join code cd on (s.emp_id = cd.code)
    and s.transaction_date = {repr(run_dt)}
''')

如果我执行上面的 python 代码,它会创建一个 table 税,但随后 max_upload_date - 列数据类型自动变为 - Char。

如果我应用 to_date 函数如下:

to_date('{run_dt}')  as max_upload_date,

我收到以下错误:

错误 - cx_Oracle.DatabaseError: ORA-01861: 文字与格式字符串不匹配

请帮忙。提前致谢。

TO_DATE 应该没问题,但前提是您应用了适当的格式掩码(而不是让 Oracle 猜测要做什么;如您所见,它失败了):

to_date('2020-10-05', 'yyyy-mm-dd')

(如果那是 1005 所代表的;反之亦然。我不知道,但你应该知道)