将日期时间插入 Cassandra(通过 DataStax PHP 驱动程序)
Insert Datetime to Cassandra (by DataStax PHP Driver)
我有一个 table:
CREATE TABLE agency (
documentCode ASCII,
sectionCode ASCII,
checkedAt TIMESTAMP,
PRIMARY KEY (franchisedCode, agencyCode)
)
;
如果需要,我可以更改数据库的结构。
我会设置一个时间戳:
$cassandra = $cluster->connect($keyspace);
$statement = $cassandra->prepare('
INSERT INTO agency
( documentCode
, sectionCode
, checkedAt
) VALUES
( :documentCode
, :sectionCode
, :checkedAt
);
');
$arguments = [
'documentCode' => $code1,
'sectionCode' => $code2,
'checkedAt' => $mixed,
];
var_dump($arguments);
$options = new ExecutionOptions([
'arguments' => $arguments,
]);
$cassandra->execute($statement, $options);
我测试了 $mixed
的一些值:
null
有效
123456789
失败,即使我转换为 int
或 string
'2016-06-06T12:34:56+00:00'
失败
'2016-06-06T12:34:56'
失败
'2016-06-06'
失败
错误信息是Fatal error: Uncaught Cassandra\Exception\InvalidArgumentException: Invalid value type
你能看出哪里不对吗?
谢谢
好吧,我解决了我的问题。
我必须使用对象类型:
$checkedAt = new \Cassandra\Timestamp($checkedAt);
我有一个 table:
CREATE TABLE agency (
documentCode ASCII,
sectionCode ASCII,
checkedAt TIMESTAMP,
PRIMARY KEY (franchisedCode, agencyCode)
)
;
如果需要,我可以更改数据库的结构。
我会设置一个时间戳:
$cassandra = $cluster->connect($keyspace);
$statement = $cassandra->prepare('
INSERT INTO agency
( documentCode
, sectionCode
, checkedAt
) VALUES
( :documentCode
, :sectionCode
, :checkedAt
);
');
$arguments = [
'documentCode' => $code1,
'sectionCode' => $code2,
'checkedAt' => $mixed,
];
var_dump($arguments);
$options = new ExecutionOptions([
'arguments' => $arguments,
]);
$cassandra->execute($statement, $options);
我测试了 $mixed
的一些值:
null
有效123456789
失败,即使我转换为int
或string
'2016-06-06T12:34:56+00:00'
失败'2016-06-06T12:34:56'
失败'2016-06-06'
失败
错误信息是Fatal error: Uncaught Cassandra\Exception\InvalidArgumentException: Invalid value type
你能看出哪里不对吗? 谢谢
好吧,我解决了我的问题。
我必须使用对象类型:
$checkedAt = new \Cassandra\Timestamp($checkedAt);