Как я могу удалить строки, если какое-то условие в postgres - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть некоторые значения в базе данных.

В строке у меня есть столбец timestamp.

Итак, у меня есть hash идентификация для группы.

Я могу получить самое старое время из группы с помощью(ЗАПРОС А):

SELECT last_hit as time
FROM cache 
WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864' 
ORDER BY time DESC 
LIMIT 1 

Как удалить все элементы (WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864), если результат запроса старше 30 минут?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 08 апреля 2019

Возьмите текущую временную метку и вычтите из нее временную метку в столбце.Затем сравните с 30-минутным интервалом.

DELETE FROM cache
       WHERE hash = 'bba04f6985f560446c122d235ed2e51bf7c10864'
             AND statement_timestamp() - last_hit > '00:30:00'::interval;

statement_timestamp() получает текущую метку времени, когда начинается оператор.Другие варианты: now() для получения отметки времени начала транзакции и clock_timestamp(), которая изменяется во время выполнения оператора.Измените это к своим потребностям.Дополнительную информацию можно найти в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...