Pandas read_sql_query - 日期参数

问题描述 投票:0回答:1

我正在尝试向 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:不是有效的月份

这里出了什么问题?

非常感谢

pandas date parameters format read-sql
1个回答
0
投票

您提到尝试更改为%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中的示例,似乎工作正常

© www.soinside.com 2019 - 2024. All rights reserved.