2014-09-05 107 views
2

是否有可能构建一个即时的tsrange并检查一个值是否在这个范围内?检查时间戳是否在tsrange内

我有一个表有两个字段,session_startsession_end,我想运行一个查询来检查传递的值是否在这两个值之间。这些方针的东西(不是有效的SQL!):

SELECT pk FROM sessions WHERE ? IN [session_start, session_end) 

我不确定的文字tsrange以及如何检查列入确切了Syntex(IN似乎并不work`

注意。 ,无论是传递的值以及session_startsession_endTIMESTAMP字段/值。

干杯!

回答

5

是的,你可以使用一个range constructor为:

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

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

:遏制operator<@的范围(不IN)。

相关问题