Sql 将1周添加到时间戳
在PostgreSQL 8.4中,我有一个用户表:Sql 将1周添加到时间戳,sql,postgresql,Sql,Postgresql,在PostgreSQL 8.4中,我有一个用户表: # \d pref_users; Table "public.pref_users" Column | Type | Modifiers ------------+-----------------------------+--------------- id | character varying(32) | not nu
# \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状态已过期的用户(拥有VIPupdate pref_users set vip = max(vip, now()) + interval '1 week';
但是max()不适用于时间戳
有谁想知道如何在每个人的vip专栏中增加一周的时间吗?试试这个:
UPDATE pref_users SET vip = GREATEST(vip, now()) + interval '1 week';
max()
可以很好地处理时间戳。但您正在以一种不可行的方式混合查询级别。您需要的是函数,而不是聚合函数max()