SQLAlchemy 查询中的 Oracle to_date

0 投票
1 回答
1927 浏览
提问于 2025-04-18 04:40

如果我用普通的Oracle SQL,我会这样写:

select *
from mytable
where 
to_date(date_d, 'dd-mon-yyyy') == to_date('01-Jan-2013', 'dd-mon-yyyy')

现在我用SQLAlchemy,感觉有点无从下手。

from datetime import datetime

dt = myTable.c.date_d == datetime(2013, 1, 1)
q = session.query(myTable).filter(dt)
q.first()

这样做会得到错误的结果,因为date_d是varchar类型的,所以它不会自动转换成date类型,除非我在查询中运行一个Oracle函数来转换数据类型。我该怎么做呢?

1 个回答

2

原来我并不需要转换数据类型。SQLAlchemy 好像会自动处理这个问题。不过,如果我想要明确地进行转换的话:

from sqlalchemy import func

dt = func.to_date(myTable.c.date_d, 'dd-mon-yyyy') == datetime(2013, 1, 1)
q = session.query(dt)
q.first()

我得到错误结果的原因是因为另一个无关的错误。

撰写回答