我正在使用 DBD::Pg 尝试创建一个带有绑定(bind)变量的插入语句,其中一个是 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, $2 ]
这是无效的 SQL,使用范围构造函数:
tstzrange($1, $2, '[)')
如果您需要这些数据类型,还有 tsrange
和 daterange
。
关于postgresql - 如何使用 perl 插入 tsrange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58288990/