【问题标题】:Oracle to_date within SQLAlchemy querySQLAlchemy 查询中的 Oracle to_date
【发布时间】:2014-06-14 17:04:58
【问题描述】:

使用普通的 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,所以除非我运行 Oracle 函数来转换查询中的数据类型,否则它不会转换为 date。我该怎么做?

【问题讨论】:

  • 第 1 步 - 停止将日期存储为文本。
  • @DanBracuk,认为这是一项智力练习。

标签: python sql oracle sqlalchemy


【解决方案1】:

原来我不需要转换数据类型。 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()

我的错误结果是由于不相关的错误造成的。

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 2020-11-24
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多