日期算术:cassandra 4

wgx48brx  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(456)

我加载到cassandra中的数据包含日期(timestamp类型)。我需要用这些日期来计算,例如给定日期和now()之间的差异,或者两个日期(timestamp类型)列之间的差异。
我试过:

SELECT x, date_1 - date_2 as age  FROM y WHERE a = 'z';

我尝试使用括号、as子句并将时间戳强制转换为日期类型,但收到了错误。
我还尝试创建一个udf(用户定义函数):

CREATE OR REPLACE FUNCTION x.age_calc (tounixtimestamp(date_1) int, tounixtimestamp(date_2) int) RETURNS NULL ON NULL INPUT RETURNS int LANGUAGE java AS 'return Integer.valueOf(Math.abs(tounixtimestamp(date_1) - tounixtimestamp(date_2)))';

我可以看到上面的自定义项有不正确的语法,但不知道如何/在哪里修复它。
例如,我希望以毫秒为单位得到一个差值,并将其转换为年或月
我确信我很快就到了,但是我在所有例子中的语法都是不正确的。
经过几天的网络搜索,没有发现真正类似的例子。
我猜Cassandra4号能做到。
版本:cassandra版本:4.0-beta2,cqlsh 5.0.1

atmip9wb

atmip9wb1#

最简单的方法是:

SELECT x, toUnixTimestamp(date_1) - toUnixTimestamp(date_2) as age  FROM y WHERE a = 'z';

相关问题