我想从NOW()
中减去分钟,并从另一张表中读取“多少分钟”的值:
SELECT * FROM A, B
WHERE
A.entity_type_id = B.entity_type_id
AND A.status = 'PENDING'
AND A.request_time < (NOW() - INTERVAL B.retry_interval MINUTE)
AND A.retry_count >= B.retry_allowed_count
此问题是B.retry_interval
是从另一个表中提取的,而通常这些查询是A.request_time < (NOW() - INTERVAL '10 MINUTE')
我如何实现这一目标?
答案 0 :(得分:1)
将间隔乘以interval '1 minute'
SELECT *
FROM A, B
WHERE
A.entity_type_id = B.entity_type_id
AND A.status = 'PENDING'
AND A.request_time < NOW() - B.retry_interval * INTERVAL '1 minute'
AND A.retry_count >= B.retry_allowed_count
答案 1 :(得分:0)
我知道它已经足够老了,但是我在这里做什么。顺便说一句,我的postgres版本是9.4.18。
尝试使用间隔数据类型。将数字从column转换为sting并合并。
SELECT *
FROM A, B WHERE
A.entity_type_id = B.entity_type_id
AND A.status = 'PENDING'
AND A.request_time < (NOW() - concat(B.retry_interval::text,'minute')::interval
AND A.retry_count >= B.retry_allowed_count
感谢我的同事找到了“间隔”数据类型