Re: Passing varchar parameter to INTERVAL
От | rob stone |
---|---|
Тема | Re: Passing varchar parameter to INTERVAL |
Дата | |
Msg-id | 1473254692.7170.6.camel@gmail.com обсуждение исходный текст |
Ответ на | Passing varchar parameter to INTERVAL (Alexander Farber <alexander.farber@gmail.com>) |
Ответы |
Re: Passing varchar parameter to INTERVAL
|
Список | 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
В списке pgsql-general по дате отправления: