gpt4 book ai didi

sqlite - 如何在 SQLite+SQLalchemy 中减去日期时间?

转载 作者:行者123 更新时间:2023-12-01 16:23:35 26 4
gpt4 key购买 nike

我正在使用 sqlite+sqlalchemy,我正在做 this我得到一些如下所示的 sql:

SELECT task.id as task_id, task.title AS task_title
FROM task
WHERE (SELECT sum(coalesce(intervals."end", CURRENT_TIMESTAMP) - intervals.start) AS sum_1
FROM intervals
WHERE task.id = intervals.task_id) > :param_1

问题是这不起作用,因为我的查询实际上需要如下所示:

...
WHERE (SELECT sum(julianday(coalesce(intervals."end", CURRENT_TIMESTAMP)) - julianday(intervals.start)) AS sum_1
...

但我一直无法在 SQLAlchemy 中找到 julianday 函数,或者确切地找到如何手动更改查询。

我如何改变行为,以便我可以真正得到 sqlite 中这些值的差异?

最佳答案

SQLAlchemy 无需显式定义每个数据库引擎中的每个函数。它知道一些标准的,但您可以使用 sqlalchemy.func.foobar(arg1, arg2, ...)它将被翻译为函数调用 foobar(arg1, arg2, ...)在 SQL 中。改变

@time_spent.expression
def time_spent(cls):
return func.coalesce(cls.end, func.current_timestamp()) - cls.start

@time_spent.expression
def time_spent(cls):
return func.julianday(func.coalesce(cls.end, func.current_timestamp())) - \
func.julianday(cls.start)

你应该没问题。一直使用 SQLite,因为julianday但不可移植。

关于sqlite - 如何在 SQLite+SQLalchemy 中减去日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18129753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com