也提出了类似的问题。目标是创建此处描述的功能:
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 for 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 server不同,在SQL server中您可以只使用'YYYY-MM-DD'
。
我尝试在?
前面添加DATE
,但不起作用。有什么想法吗?
在此处找到解决方案。只需将d1
定义为date(2020,02,20)
即可。
如何在pyODBC查询中参数化日期戳?