Database 如何在Cassandra中将日期类型的值转换为文本?
我有一张卡桑德拉表,结构如下-Database 如何在Cassandra中将日期类型的值转换为文本?,database,cassandra,cql,Database,Cassandra,Cql,我有一张卡桑德拉表,结构如下- CREATE TABLE timeseries_s ( prop_name text PRIMARY KEY, description text, value text ); 现在我需要在这个表中插入一个属性,它的值将是文本格式的当前日期。我已经创建了以下CQL,但它给出了以下错误- INSERT INTO timeseries_s (prop_name, description, value) VALUES ('xyz', 'abc', T
CREATE TABLE timeseries_s (
prop_name text PRIMARY KEY,
description text,
value text
);
现在我需要在这个表中插入一个属性,它的值将是文本格式的当前日期。我已经创建了以下CQL,但它给出了以下错误-
INSERT INTO timeseries_s (prop_name, description, value) VALUES ('xyz', 'abc', TODATE(now())));
错误-SyntaxException:第1行:168不匹配的输入“')”应为EOF(…'abc',TODATE(now())[)…)
此后,我在下面尝试-
INSERT INTO timeseries_s (prop_name, description, value) VALUES ('xyz', 'Migration for DSE started at this time', CAST(TODATE(now()) AS TEXT));
错误-语法异常:第1行:158在输入“(”(…值('xyz','abc',强制转换)处没有可行的替代方案
有什么建议吗?
TODATE
将列名
作为输入。此外,CAST
仅用于SELECT
语句。可能您可以通过程序实现这一点。我能想到的唯一方法是使用一个用户定义的函数来解决这个问题。首先,您将需要在cassandra.yaml
中启用用户定义的函数:
enable_user_defined_functions: true
一旦节点重新启动,我通过在我的stackoverflow
keyspace中定义一个名为totext
的函数来完成这项工作,如下所示:
aploetz@cqlsh:stackoverflow> CREATE OR REPLACE FUNCTION totext (input DATE)
RETURNS NULL ON NULL INPUT RETURNS TEXT
LANGUAGE java AS 'return input.toString();';
> INSERT INTO timeseries_s (prop_name, description, value)
VALUES ('xyz', 'Migration for DSE started at this time',
stackoverflow.totext(todate(now())));
> SELECT * FROM timeseries_s ;
prop_name | description | value
-----------+----------------------------------------+------------
xyz | Migration for DSE started at this time | 2020-09-03
(1 rows)
创建该函数后,您可以在INSERT
中使用它,如下所示:
aploetz@cqlsh:stackoverflow> CREATE OR REPLACE FUNCTION totext (input DATE)
RETURNS NULL ON NULL INPUT RETURNS TEXT
LANGUAGE java AS 'return input.toString();';
> INSERT INTO timeseries_s (prop_name, description, value)
VALUES ('xyz', 'Migration for DSE started at this time',
stackoverflow.totext(todate(now())));
> SELECT * FROM timeseries_s ;
prop_name | description | value
-----------+----------------------------------------+------------
xyz | Migration for DSE started at this time | 2020-09-03
(1 rows)