В PostgreSQL 8.4 у меня есть пользовательская таблица:
# \d pref_users;
Table "public.pref_users"
Column | Type | Modifiers
------------+-----------------------------+---------------
id | character varying(32) | not null
first_name | character varying(64) |
last_name | character varying(64) |
female | boolean |
vip | timestamp without time zone |
mail | character varying(254) |
Для пользователей, которые приобрели VIP-статус, я установил
update pref_users set vip = now() + interval '6 month' where id='12345';
и позже в других скриптах я просто проверяю это с помощью
select vip > now() as vip_is_active from pref_users where id='12345';
Но есть также 1) пользователи, которые никогда не покупали VIP (имеют vip = NULL ) и 2) пользователи, чей статус VIP уже истек (у них есть vip )
Мой вопрос : в качестве промоушена я хотел бы дать каждому 1 неделю VIP-статус.
Я надеялся сделать:
update pref_users set vip = max(vip, now()) + interval '1 week';
, но max () не работает с метками времени.
У кого-нибудь есть идея, как добавить 1 неделю в каждый vip столбец?