SQLAlchemy 查询中的 Oracle to_date
如果我用普通的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()
我得到错误结果的原因是因为另一个无关的错误。