在 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 进行过滤,但是 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()
应该只打印将来的日期,这正是您要实现的目标。
希望这对您有所帮助!
我认为这个问题可以通过不使用 time
和 date
前缀来解决:
from q in Line, where: fragment("? + ? > NOW()", q.date, q.time)
甚至
from q in Line, where: q.date + q.time < fragment("NOW()")
假设您的列具有正确的数据类型
我的 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 进行过滤,但是 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()
应该只打印将来的日期,这正是您要实现的目标。 希望这对您有所帮助!
我认为这个问题可以通过不使用 time
和 date
前缀来解决:
from q in Line, where: fragment("? + ? > NOW()", q.date, q.time)
甚至
from q in Line, where: q.date + q.time < fragment("NOW()")
假设您的列具有正确的数据类型