在2列上查询日期/时间

问题描述 投票:0回答:2

我的PostgreSQL表上有一个列日期和列时间。我希望进行查询,根据日期和时间过滤未过期的行。我试过这个,但它不起作用并返回错误Postgrex.Error) ERROR 42601 (syntax_error) syntax error at or nea

from q in Line, where: fragment("date ? + time ? > NOW()", q.date, q.time)
postgresql elixir ecto
2个回答
0
投票

我认为这个问题可以通过不使用timedate前缀来解决:

from q in Line, where: fragment("? + ? > NOW()", q.date, q.time)

甚至

from q in Line, where: q.date + q.time < fragment("NOW()")

如果提供,您的列具有正确的数据类型


0
投票

不确定是否需要运行标准查询或者是否通过某些GUI进行过滤,但timedate类型可以通过简单的添加组合在一起。 https://www.postgresql.org/docs/current/functions-datetime.html

以下代码:

WITH q AS (
    SELECT* FROM (VALUES 
        ('11:29:10'::time,'03-18-2019'::date),
        ('11:29:10'::time,'03-18-2021'::date)
    ) t ("time","date")
)
SELECT * FROM q WHERE q.time+q.date > NOW()

应该只打印将来的日期,这是您要实现的目标。希望这可以帮助!

© www.soinside.com 2019 - 2024. All rights reserved.