Postgresql 检查时间戳是否在tsrange范围内

Postgresql 检查时间戳是否在tsrange范围内,postgresql,timestamp,date-range,Postgresql,Timestamp,Date Range,是否可以构建动态tsrange并检查值是否在该范围内 我有一个表,它有两个字段,session_start和session_end,我想运行一个查询,检查传递的值是否在这两个值之间。以下内容不是有效的SQL!: SELECT pk FROM sessions WHERE ? IN [session_start, session_end) 我不确定文字tsrange的确切syntex,也不确定如何检查是否包含在“似乎不起作用”中 请注意,传递的值以及会话开始和会话结束都是时间戳字段/值 干杯 是

是否可以构建动态tsrange并检查值是否在该范围内

我有一个表,它有两个字段,session_start和session_end,我想运行一个查询,检查传递的值是否在这两个值之间。以下内容不是有效的SQL!:

SELECT pk FROM sessions WHERE ? IN [session_start, session_end)
我不确定文字tsrange的确切syntex,也不确定如何检查是否包含在“似乎不起作用”中

请注意,传递的值以及会话开始和会话结束都是时间戳字段/值

干杯

是的,您可以使用:

SELECT rangetype(lower, upper[, bounds]);
-- bounds can be '[]', '[)' (default), '(]', '()'

-- in your case:
SELECT pk FROM sessions WHERE ? <@ tsrange(session_start, session_end, '[)');
注:安全壳是