From: | Alexander Farber <alexander(dot)farber(at)gmail(dot)com> |
---|---|
To: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Verifying a timestamp is null or in the past |
Date: | 2011-12-30 18:34:16 |
Message-ID: | CAADeyWinVfn3oHxik3-KiV7wkWq+OvSCwcmX60NAqxSB_GEOkA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Awesome advices here.
Thank you and happy new year.
On Fri, Dec 30, 2011 at 2:07 PM, Alban Hertroys <haramrae(at)gmail(dot)com> wrote:
> select 1 from pref_users where id=_from and vip > current_timestamp + interval '1 week';
>
> if not found then
> return;
> end if;
>
> "found" is a special pl/psql keyword that tells whether the last query returned any results or not. Using that you can get rid of the entire declare-block in your function ;)
>
> Originally I tacked a "vip is not null or" before the check in the where-clause, but that's unnecessary - if vip is null, then the expression also evaluates to null and the where-clause will treat it as false. That's one of the peculiarities of SQL... For posterity's sake it may be better to add that part to the query anyway, that's up to personal preference:
>
> select 1 from pref_users where id=_from and (vip is not null or vip > current_timestamp + interval '1 week');
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-12-30 18:34:44 | Would whoever is at "Hi-Tech Gears Ltd, Gurgaon, India" fix their mailer? |
Previous Message | Tom Lane | 2011-12-30 18:27:52 | Re: Data Type for Money |