在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 =空),2) VIP状态已经过期的用户(他们有< now())
我的问题:作为一种提升,我想给每个人一个星期的贵宾地位。
我希望这样做:
update pref_users set vip = max(vip, now()) + interval '1 week';但是max()不适用于时间戳。
请大家想一想,如何给每个人的vip专栏增加一个星期?
发布于 2011-11-20 10:30:53
试试这个:
UPDATE pref_users SET vip = GREATEST(vip, now()) + interval '1 week';max()可以很好地处理时间戳。但是,您正在以一种不可行的方式混合查询级别。您需要函数最大(),而不是聚合函数max()。
https://stackoverflow.com/questions/8200910
复制相似问题