我正在尝试使用SQLAlchemy ORM启动DATEDIFF查询,其中我需要向DATEDIFFTR的输出添加一个变量
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()
一起使用,但没有产生预期的结果。如何使此查询工作?
SQLAlchemy假设func.datediff
返回一个String
。您需要指定类型:
func.datediff(text("ss"), some_date, another_date, type_=Integer) + 1000
或强制+
操作员:
func.datediff(text("ss"), some_date, another_date).op('+')(1000)