这与Using a SQLAlchemy Integer field to create a timedelta object for comparison不同,因为该线程在询问添加时间时要使用的函数。该函数是针对他们的MySQL版本找到的,但用户的后续编辑偏离了他们原来的问题并且没有回答这个问题。
我正在使用MySQL。我想使用一个名为timestampadd的函数。 https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampadd它的第一个参数是我添加的时间单位,EG:MINUTE,HOUR,DAY。
在编写SQLAlchemy查询时,我无法执行类似
的操作datetime_now = datetime.datetime.utcnow()
Item.query.filter(Item.created <= sqlalchemy.func.timestampadd(MINUTE, 1, datetime_now))
如果我这样做,我会收到MINUTE
的未定义错误。我也尝试过:
Item.query.filter(Item.created <= sqlalchemy.func.timestampadd('MINUTE', 1, datetime_now))
但是这将生成带有单位引号的timestampadd调用,这会导致MySQL错误。如何删除生成的查询中MINUTE
周围的引号?
答案 0 :(得分:0)
为了按原样传递unit参数关键字,请使用text()
构造:
Item.query.filter(
Item.created <= sqlalchemy.func.timestampadd(text('MINUTE'), 1, datetime_now))