Был задан аналогичный вопрос. Цель состоит в том, чтобы создать функцию, описанную здесь:
def DB_Query(d1, d2):
conn = pyodbc.connect('DSN=DATASOURCE')
tbl = "SELECT TableA.Field_1 \
FROM TableA \
WHERE TableA.Date>=? AND TableA.Date<=?"
df_tbl= pd.read_sql_query(tbl, conn, params = (d1,d2))
conn.close
return df_tbl
Это работало с базой данных с драйвером SQL Server, но не сработало с драйвером Microsoft ODBC для Oracle.
Когда я даю, например, d1 = '2020-02-20'
и d2 = '2020-02-25'
, я получаю ошибку ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)')
Я понимаю, что в Oracle вам нужно DATE 'YYYY-MM-DD'
для обозначения даты, которая отличается от SQL-сервера, где вы можете просто использовать 'YYYY-MM-DD'
.
Я пробовал добавить DATE
перед ?
, но не работает. Любые идеи?