#python #sql #python-3.x #oracle-sqldeveloper #cx-oracle
#питон #sql #python-3.x #oracle-разработчик sqld #cx-oracle
Вопрос:
У меня есть run_dt, который создает проблему при создании таблицы, тип данных столбца изменяется сам по себе как символ.
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) lt;class 'str'gt;
У меня есть база данных 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, он создаст таблицу, но затем тип данных max_upload_date — столбца автоматически станет — Char.
если я применю функцию to_date, как показано ниже:
to_date('{run_dt}') as max_upload_date,
Я получаю следующую ошибку:
ошибка — cx_Oracle.Ошибка базы данных: ORA-01861: литерал не соответствует строке формата
пожалуйста, помогите. заранее спасибо.
Ответ №1:
TO_DATE
должно быть в порядке, но только если вы примените соответствующую маску формата (вместо того, чтобы позволять Oracle угадывать, что делать; как вы можете видеть, это не удалось).:
to_date('2020-10-05', 'yyyy-mm-dd')
(если это то, что 10
и 05
представляет; может быть наоборот. Я не могу сказать, но ты должен)
Комментарии:
1. to_date(‘{run_dt}’,’ГГГГ-ММ-ДД’) как max_upload_date, — вот как я использовал, и это сработало. Спасибо