Passing varchar parameter to INTERVAL

From: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Passing varchar parameter to INTERVAL
Date: 2016-09-07 13:05:38
Message-ID: CAADeyWjto+cJ6+LKW799MY2qb3n5t5kqSjkJKFomUWChLiC13Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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

Responses

Browse pgsql-general by date

  From Date Subject
Next Message rob stone 2016-09-07 13:10:55 Re: pgadmin4 rc1 query tool performance
Previous Message Jehan-Guillaume de Rorthais 2016-09-07 12:08:16 Re: PGDATA / data_directory