Я думаю, что проблема здесь заключается в следующем:
транзакция_dt = (datetime.today ()). Strftime ('% Y-% m-% d')
Тип возвращаемого результата - «строка», а не «дата / время».
>> transaction_dt = (datetime.today()).strftime('%Y-%m-%d')
>> print(transaction_dt)
2020-04-14
>> type(transaction_dt)
<class 'str'>
Нет необходимости форматировать дату и время в виде строки, передавать значение даты и времени непосредственно как datatime тип:
>> type(datetime.datetime.now())
<class 'datetime.datetime'>
Теперь давайте cx_ Oracle обработать это в операторе execute:
cursor.execute("INSERT INTO table VALUES(:my_date)", {'my_date': datetime.datetime.now()})
Здесь есть хорошее объяснение здесь .