CREATE TABLE payments (
payment_id serial,
updated_at timestamp
);
INSERT INTO payments (updated_at) VALUES ('2022-01-01:13:14:15'::timestamp);
WITH p AS (
SELECT
payments.*,
extract(EPOCH from (now() - updated_at::timestamp) / 60) AS minutes_passed
FROM public.payments
) SELECT
p.*,
CASE
WHEN 60 - minutes_passed > 0
AND 60 - minutes_passed <= 15 THEN 'expires'
WHEN 60 - minutes_passed > 15 THEN 'success'
ELSE 'expired'
END
AS exp_status
FROM p;