我有一个包含以下内容的表(删除了其他字段)
CREATE TABLE if NOT EXISTS request_audit (
user_id text,
request_body text,
lookup_timestamp TIMESTAMP
PRIMARY KEY ((user_id), lookup_timestamp)
) WITH CLUSTERING ORDER BY ( lookup_timestamp DESC);
我用以下内容创建一个记录 INSERT INTO request_audit (user_id, lookup_timestamp, request_body) VALUES (?, ?, toTimestamp(now()))
我试图检索过去24小时内的所有行,但时间戳有问题,我已经尝试了 SELECT * from request_audit WHERE user_id = '1234' AND lookup_timestamp > toTimestamp(now() - "1 day" )
以及其他各种方法,试图从查询中抽出一天的时间。
2条答案
按热度按时间5lwkijsr1#
Cassandra的日期操作支持非常有限。您需要的是一个自定义函数来进行日期数学计算。
灵感来自这里。如何使用cassandra查询将过去6个月的数据与timestamp列进行比较?
您可以编写一个udf(用户定义函数)来更新操作。
请记住,您必须在config中启用udf。Cassandra·伊梅尔。希望这是可能的。
一旦完成,这个查询就可以完美地工作。
zvms9eto2#
您不能直接从cql执行,因为它不支持这种表达式。如果您是从
cqlsh
,则可以尝试用以下内容替换所需的日期:并执行此查询。
如果您是从程序中调用它,只需使用相应的日期/时间库来获得相应的日期-1天,但这取决于您使用的语言。