我想知道两次约会在SQLAlchemy上的区别。使用Postgresql,我有以下工作:
SELECT
EXTRACT(EPOCH FROM ('2019-02-11 17:59:05.953894'::timestamp - '2019-02-11 17:59:01.953894'::timestamp))
但是,我在SQLAlchemy中尝试同样的方法时遇到了问题:
session.query(func.extract('epoch',func.date(subquery.c.dt_final.cast(Date)))-
func.date(subquery.c.dt_start.cast(Date))).all()
获取此错误:
ProgrammingError: (psycopg2.errors.UndefinedFunction) operator does not exist: double precision - date
LINE 1: ...h FROM date(CAST(anon_2.dt_final AS DATE))) - date(CAS...
^
HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
在SQLAlchemy中,如何正确地获得两个日期之间的差异
谢谢
可以使用以下代码复制SQL语句:
其中
dt_start
和dt_final
是String
列,包含问题中的时间戳字符串。结果列是一个float(4.0,)
然而,在Postgresql中,我们可以直接减去时间戳
所以我们可以在SQLAlchemy中做同样的事情:
它返回一个
datetime.timedelta
:(datetime.timedelta(seconds=4),)
如果目标是减去日期而不是时间戳,则将时间戳字符串强制转换为
Date
并减去它将返回一个整数列,例如
(10,)
您可以使用datediff进行日期差异:
您可以使用的单位:
另存为变量:
SQL_炼金术:
您可能需要从时间戳切换到日期时间,但有一个名为timediff()的内置函数,其工作原理类似于count()和max()。我不熟悉SQLalchemy,但它应该是非常通用的
相关问题 更多 >
编程相关推荐