在2列上查询日期/时间

时间:2019-03-16 15:34:17

标签: postgresql elixir ecto

我在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)

2 个答案:

答案 0 :(得分: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()

应该仅打印将来要实现的日期。 希望这会有所帮助!

答案 1 :(得分:0)

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

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

甚至

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

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