From: | rob stone <floriparob(at)gmail(dot)com> |
---|---|
To: | Alexander Farber <alexander(dot)farber(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Passing varchar parameter to INTERVAL |
Date: | 2016-09-07 13:24:52 |
Message-ID: | 1473254692.7170.6.camel@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello,
On Wed, 2016-09-07 at 15:05 +0200, Alexander Farber wrote:
> Good afternoon,
>
> when trying to create a custom function to temporary ban a user:
>
> CREATE OR REPLACE FUNCTION words_ban_user(
> IN in_uid integer,
> IN in_until varchar, -- '1 week' OR '1 month' OR '1 year'
> IN in_reason varchar)
> RETURNS void AS
> $func$
> BEGIN
> ........
> UPDATE words_users SET
> banned_until = CURRENT_TIMESTAMP + INTERVAL
> in_until,
> banned_reason = in_reason,
> vip_until = vip_until + INTERVAL in_until, --
> for paying user
> grand_until = grand_until + INTERVAL in_until
> WHERE uid = in_uid;
>
> END
> $func$ LANGUAGE plpgsql;
>
> in 9.5.4 I unfortunately get the error:
>
> ERROR: syntax error at or near "in_until"
> LINE 69: ... banned_until = CURRENT_TIMESTAMP + INTERVAL
> in_until,
> ^
> Is there please a better way here?
>
> Thank you
> Alex
>
I think the interval values need to be quoted.
In any event I always use the P or T syntax. 'P1D' means add one day,
etc.
HTH,
Rob
From | Date | Subject | |
---|---|---|---|
Next Message | hubert depesz lubaczewski | 2016-09-07 13:35:02 | Re: Passing varchar parameter to INTERVAL |
Previous Message | Durumdara | 2016-09-07 13:24:29 | Re: Restricted access on DataBases |