我正在尝试向 Pandas 中的 SQL 查询添加两个日期参数。以下示例查询:
trades = """
Select
trade_date,
units
from
transactions
where
trade_date BETWEEN :startdate and :enddate
"""
我现在以 MM/DD/YYYY 格式定义日期(因为它们像数据库中那样存储)
today = pd.Timestamp.today().strftime('%-m/%-d/%Y')
yday = date.today() - timedelta(days=1)
yday = yday.strftime('%-m/%-d/%Y')
trades_df = pd.read_sql_query(trades, con, params = {"startdate":today, "enddate":yday})
但是当传递像上面这样的参数时,我收到错误消息ORA-01843:不是有效的月份
这里出了什么问题?
非常感谢
您提到尝试更改为%m/%d/%Y,但仍然失败。
我们可以尝试先更改它DD/MM/YYYY,然后在
TO_DATE
查询中投射select
today = pd.Timestamp.today().strftime('%m/%d/%Y')
yday = (date.today() - timedelta(days=1)).strftime('%m/%d/%Y')
选择查询
trades = """
SELECT trade_date,
units FROM transactions
WHERE TO_DATE(trade_date, 'MM/DD/YYYY')
BETWEEN TO_DATE(:startdate, 'MM/DD/YYYY') AND TO_DATE(:enddate,
'MM/DD/YYYY')
"""
Fiddle中的示例,似乎工作正常