我在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)
答案 0 :(得分:0)
不确定是否需要运行标准查询或是否通过某些GUI进行过滤,但是可以通过简单的加法将time
和date
类型组合在一起。 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)
我认为可以通过不使用time
和date
前缀来解决此问题:
from q in Line, where: fragment("? + ? > NOW()", q.date, q.time)
甚至
from q in Line, where: q.date + q.time < fragment("NOW()")
提供的,您的列具有正确的数据类型