I'm using MonetDB with MonetDB-PHP library.
I have followed the documentation from: https://github.com/MonetDB/MonetDB-PHP
Everything is working fine, but if I set parameter for timestamp type column I get the following error:
Error from MonetDB: 42000!Wrong type for argument 1 of function call: char, expected timestamp
For example,
this is working:
$result = $connection->Query(<<<EOF
select
*
from
"cats"
where
"name" = ?
and "weight_kg" > ?
limit
10
EOF
, [ "D'artagnan", 5.3 ]);
but this will not work:
$result = $connection->Query(<<<EOF
select
*
from
"cats"
where
"name" = ?
and "weight_kg" > ?
and "birthdate" < ?
limit
10
EOF
, [ "D'artagnan", 5.3, "2020-02-28 12:37:16" ]);
The error occurs for any column that is of timestamp type and only when passing value as parameter.
What am I doing wrong?
Edit: This is the actual table I'm working with
CREATE TABLE sys.url_data (
userid varchar(50),
groupid varchar(50),
category varchar(50),
url varchar(1024),
datetime timestamp
);
"datetime" is the column I'm using in the query
A fix has been deployed. Update to version 1.1.3
. The timestamp
values have to be passed as DateTime
objects.
With your example table that would look like:
$dt = DateTime::createFromFormat("Y-m-d H:i:s", "2020-02-28 12:37:16");
$result = $connection->Query(<<<EOF
select
*
from
sys.url_data
where
datetime > ?
EOF
, [ $dt ]);
To use the microseconds too:
$dt = DateTime::createFromFormat("Y-m-d H:i:s.u", "2020-02-28 12:37:16.123456");
Also updated the documentation on prepared statements: