Как вставить tsrange, используя perl - PullRequest
0 голосов
/ 08 октября 2019

Используя DBD :: Pg, я пытаюсь сделать оператор вставки со связанными переменными, одной из которых является tsrange. Я продолжаю получать синтаксические ошибки. Может ли кто-нибудь объяснить, как это сделать?

из сценария perl:

$sth->{'insert'}->execute($hashRef->{'<NUMBER>'}
                                    , $hashRef->{'<FIRSTNAME>'}
                                    , $hashRef->{'<LASTNAME>'}
                                    , $hashRef->{'<DATEIN>'} . ' ' .       $hashRef->{'<TIMEIN>'}
                                    , $hashRef->{'<DATEOUT>'} . ' ' .  $hashRef->{'<TIMEOUT>'}
                                    , $hashRef->{'<JOBCODE>'} 
                                    , $hashRef->{'<JOBCODEDESC>'} 
                                    , $hashRef->{'<COSTCODELEVEL1>'} 
                                    , $hashRef->{'<COSTCODELEVEL2>'} 
                                    , $hashRef->{'<COSTCODELEVEL3>'} 
                                    , $hashRef->{'<DEPARTMENT>'} 
            )or die $DBI::errstr;
    enter code here 

из файла конфигурации:

sql:
    insert: |-
        insert into etl.timeclock_plus values (
           ? 
         , ? 
         , ?  
         , [ ? , ? ] 
         , ? 
         , ? 
         , ? 
         , ? 
         , ?
         , ? 
        )   
The error : 
syntax error at or near "$4"

1 Ответ

3 голосов
/ 08 октября 2019

Вместо

[ $1, $2 ]

, который является недопустимым SQL, используйте функцию конструктора диапазона:

tstzrange($1, $2, '[)')

Также есть tsrange и daterange, если вам нужны эти типы данных.

...