在 2 列上查询 date/time

Querying date/time on 2 columns

我的 PostgreSQL table 上有列日期和列时间。我想进行查询,以根据日期和时间过滤未过期的行。我试过了,但它不起作用并且 returns 出现错误 Postgrex.Error) ERROR 42601 (syntax_error) syntax error at or nea:

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

不确定您是否需要 运行 标准查询,或者您是否通过某些 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()

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

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

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

甚至

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

假设您的列具有正确的数据类型