Re: Function inserting into tstzrange ? (syntax error at or near...)

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Function inserting into tstzrange ? (syntax error at or near...)
Дата
Msg-id 1a7f0c3f-f241-4e5c-a38b-7468ccedcdff@aklaver.com
обсуждение исходный текст
Ответ на Re: Function inserting into tstzrange ? (syntax error at or near...)  (Laura Smith <n5d9xq3ti233xiyif2vp@protonmail.ch>)
Ответы Re: Function inserting into tstzrange ? (syntax error at or near...)
Список pgsql-general
On 2/18/24 10:30, Laura Smith wrote:
> 
>>
>> There's not bespoke SQL syntax for constructing a range. You must
>> use a function, something like
>>
>> VALUES(p_event_id, tstzrange(p_start_time,p_end_time,'[)')) ...
> 
> 
> Thanks all for your swift replies.
> 
> Serves me right for assuming I could use variable substitution where text would normally go, i.e. I thought I could
justmimic the below example from the docs by substituting the variables:
 
> 
> INSERT INTO reservation VALUES
>      (1108, '[2010-01-01 14:30, 2010-01-01 15:30)');

Yeah, a quick and dirty example:

\d event_sessions
                          Table "public.event_sessions"
       Column       |           Type           | Collation | Nullable | 
Default
-------------------+--------------------------+-----------+----------+---------
  event_id          | text                     |           | not null |
  evt_sess_id       | text                     |           | not null |
  evt_sess_times    | tstzrange                |           | not null |
  evt_sess_inserted | timestamp with time zone |           | not null | 
now()
Indexes:
     "event_sessions_pkey" PRIMARY KEY, btree (evt_sess_id)


CREATE OR REPLACE FUNCTION public.new_event_session(p_event_id text, 
p_start_time timestamp with time zone, p_end_time timestamp with time 
zone, p_sess_title text, p_sess_desc text)
  RETURNS text
  LANGUAGE plpgsql
AS $function$
DECLARE
v_session_id text;
BEGIN
     EXECUTE format('INSERT INTO event_sessions(event_id, evt_sess_id, 
evt_sess_times)
         VALUES($1, 2, tstzrange($2, $3)) RETURNING evt_sess_id') INTO 
v_session_id
         USING p_event_id, p_start_time, p_end_time;
RETURN v_session_id;
END;
$function$


select new_event_session('1', '2024-02-18', '2024-02-20', 'test', 'test 
desc');
  new_event_session
-------------------
  2

> 
> Lesson learnt !
> 
> Thanks again.
> 
> 

-- 
Adrian Klaver
adrian.klaver@aklaver.com




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

Предыдущее
От: Dominique Devienne
Дата:
Сообщение: Re: Users and object privileges maintenance
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: Function inserting into tstzrange ? (syntax error at or near...)