我有一个返回的函数min_time
,max_time
我想在 SELECT 查询中将其用作时间戳列的约束。以下是我的想法,但我宁愿不必两次运行查询。
SELECT timestamp, col FROM data
WHERE timestamp BETWEEN
(SELECT min_time FROM get_time_limits())
AND
(SELECT max_time FROM get_time_limits());
有没有办法将单个嵌套 SELECT 查询中的多个列用作另一个查询中的约束?
样品表:
CREATE TABLE test(timestamp TIMESTAMPTZ, col INTEGER);
INSERT INTO test (
SELECT generate_series(
NOW() - INTERVAL '10 days',
NOW(),
INTERVAL '1 day'),
generate_series(1, 11)
);
示例最小/最大时间:
'2023-03-23 00:00:00+00'::TIMESTAMPTZ
'2023-03-29 00:00:00+00'::TIMESTAMPTZ
让你的函数返回一个tstzrange然后你可以使用这样的东西:
我没试过,但以下应该使用当前函数工作:
只需使用该函数作为虚拟表进行连接: