Oracle to_date在SQLAlchemy查询中

时间:2014-04-28 23:53:14

标签: python sql oracle sqlalchemy

使用普通的 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 个答案:

答案 0 :(得分: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()

我的错误结果是由于一个无关的错误。