Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将1周添加到时间戳_Sql_Postgresql - Fatal编程技术网

Sql 将1周添加到时间戳

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

在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

我的问题:作为促销,我想给每个人一周的VIP身份

我希望能做到:

update 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()