首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在时间戳上加上1周

问在时间戳上加上1周
EN

Stack Overflow用户
提问于 2011-11-20 10:28:11
回答 1查看 7.6K关注 0票数 2

在PostgreSQL 8.4中,我有一个用户表:

代码语言:javascript
复制
# \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身份的用户,我设置

代码语言:javascript
复制
update pref_users set vip = now() + interval '6 month' where id='12345';

稍后,在其他脚本中,我只需要检查一下

代码语言:javascript
复制
select vip > now() as vip_is_active from pref_users where id='12345';

但也有1)用户从未购买VIP (有vip =空),2) VIP状态已经过期的用户(他们有< now())

我的问题:作为一种提升,我想给每个人一个星期的贵宾地位。

我希望这样做:

代码语言:javascript
复制
update pref_users set vip = max(vip, now()) + interval '1 week';

但是max()不适用于时间戳。

请大家想一想,如何给每个人的vip专栏增加一个星期?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-20 10:30:53

试试这个:

代码语言:javascript
复制
UPDATE pref_users SET vip = GREATEST(vip, now()) + interval '1 week';

max()可以很好地处理时间戳。但是,您正在以一种不可行的方式混合查询级别。您需要函数最大(),而不是聚合函数max()。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8200910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档