gpt4 book ai didi

cassandra - 检索过去 24 小时的行

转载 作者:行者123 更新时间:2023-12-04 14:18:27 25 4
gpt4 key购买 nike

我有一个包含以下内容的表格(删除了其他字段)

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")以及其他各种尝试从​​查询中抽出一天时间的方法。

最佳答案

Cassandra 对日期操作的支持非常有限。您需要的是一个自定义函数来进行日期数学计算。

灵感来自这里。 How to get Last 6 Month data comparing with timestamp column using cassandra query?

您可以编写一个 UDF(用户定义的函数)来进行日期操作。

CREATE FUNCTION dateAdd(date timestamp, day int)     
CALLED ON NULL INPUT
RETURNS timestamp
LANGUAGE java
AS
$$java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
c.add(java.util.Calendar.DAY_OF_MONTH, day);
return c.getTime();$$ ;

请记住,您必须在配置中启用 UDF。 Cassandra .yml。希望这是可能的。

enable_user_defined_functions: true

一旦完成,此查询将完美运行。

SELECT * from request_audit WHERE user_id = '1234' AND lookup_timestamp > dateAdd(dateof(now()), -1)

关于cassandra - 检索过去 24 小时的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com