Re: Verifying a timestamp is null or in the past

Поиск
Список
Период
Сортировка
От Alban Hertroys
Тема Re: Verifying a timestamp is null or in the past
Дата
Msg-id E8931ABD-5784-4BC9-A0FF-2EAF7C3E2C07@gmail.com
обсуждение исходный текст
Ответ на Verifying a timestamp is null or in the past  (Alexander Farber <alexander.farber@gmail.com>)
Ответы Re: Verifying a timestamp is null or in the past
Список pgsql-general
On 29 Dec 2011, at 19:15, Alexander Farber wrote:

> I'm trying to create PL/pgSQL procedure allowing
> players with enough vip status left
> to give a week of it to other users, as a "gift":
>
> create or replace function pref_move_week(_from varchar,
>    _to varchar) returns void as $BODY$
>        declare
>                has_vip boolean;
>        begin
>
>        select vip > current_timestamp + interval '1 week'
>            into has_vip from pref_users where id=_from;
>
>        if (not has_vip) then
>                return;
>        end if;


I would probably write that as:

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
getrid 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
peculiaritiesof SQL... For posterity's sake it may be better to add that part to the query anyway, that's up to
personalpreference: 

select 1 from pref_users where id=_from and (vip is not null or vip > current_timestamp + interval '1 week');

Alban Hertroys

--
If you can't see the forest for the trees,
cut the trees and you'll find there is no forest.


В списке pgsql-general по дате отправления:

Предыдущее
От: Magnus Hagander
Дата:
Сообщение: Re: streaming replication vacuum
Следующее
От: "Cezariusz Marek"
Дата:
Сообщение: How to get the time zone offset