【发布时间】:2021-09-05 17:36:16
【问题描述】:
我正在尝试使用 SQLAlchemy ORM 触发 DATEDIFF 查询,我需要在 DATEDIFF 的输出中添加一个变量
ORM:
query = session.query(func.datediff(text("ss"), some_date, another_date) + 1000).all()
所需的 SQL:
SELECT DATEDIFF(SS, some_date, another_date) + 1000 FROM Table
执行上述 ORM 查询将 SQL 输出为
SELECT DATEDIFF(SS, some_date, another_date) || '' AS anon_1 FROM Table
并抛出 ProgrammingError "Implicit conversion from datatype 'VARCHAR' to 'INT' not allowed. Use the CONVERT function to run this query"
我曾尝试将label() 与func.datediff() 一起使用,但没有产生预期的结果。我怎样才能使这个查询工作?
【问题讨论】:
-
你可以为
Table添加你的模型或DDL吗? -
还有
some_date和another_date是什么?他们没有向我表明“数字”,您可能希望修改您的标题以表明所需的数据类型。 -
它们是日期时间对象。例如,如果 datediff 的结果是 1000 秒,我正在尝试选择 2000 作为值。
标签: python database sqlalchemy pyodbc