我在数据库中有一些值。
我连续有一列timestamp
。
所以我有hash
个组的标识。
我可以按(查询A)从组中获取最长时间:
SELECT last_hit as time
FROM cache
WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864'
ORDER BY time DESC
LIMIT 1
如果查询结果早于30分钟,如何删除所有项目(WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864
?
谢谢您的帮助。
答案 0 :(得分:0)
获取当前时间戳,并从中减去该列中的时间戳。然后比较一下30分钟的间隔。
DELETE FROM cache
WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864'
AND statement_timestamp() - last_hit > '00:30:00'::interval;
statement_timestamp()
获取语句开始时的当前时间戳。其他选项包括now()
,用于获取事务开始的时间戳; clock_timestamp()
,其在语句执行期间发生变化。根据您的需要进行更改。可以在documentation中找到更多信息。