我的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)
我认为这个问题可以通过不使用time
和date
前缀来解决:
from q in Line, where: fragment("? + ? > NOW()", q.date, q.time)
甚至
from q in Line, where: q.date + q.time < fragment("NOW()")
如果提供,您的列具有正确的数据类型
不确定是否需要运行标准查询或者是否通过某些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()
应该只打印将来的日期,这是您要实现的目标。希望这可以帮助!