如何在Cassandra查询中对now()生成的时间戳进行指定时长偏移?
Cassandra中实现时间戳偏移的方法
要实现对当前时间做指定时长的偏移,你需要注意:now()函数返回的是TIMEUUID类型,不能直接和时长数值运算,得转换成TIMESTAMP类型后再操作,或者改用直接返回TIMESTAMP的currentTimestamp()函数,具体两种方案如下:
方案1:使用currentTimestamp()(推荐)
currentTimestamp()直接返回当前的TIMESTAMP类型时间,支持和INTERVAL语法做加减运算,写法更简洁:
print(session.execute("SELECT currentTimestamp() - INTERVAL '1' HOUR FROM system.local").one())
执行后就能得到当前时间减1小时的结果,和你预期的一致。
方案2:基于now()转换后运算
如果一定要用now(),先通过toTimestamp()把它转成TIMESTAMP,再做偏移:
print(session.execute("SELECT toTimestamp(now()) - INTERVAL '1' HOUR FROM system.local").one())
其他偏移单位示例
你可以根据需求调整INTERVAL的单位和数值,比如:
- 减30分钟:
INTERVAL '30' MINUTE - 加2天:
currentTimestamp() + INTERVAL '2' DAY - 减1年:
currentTimestamp() - INTERVAL '1' YEAR
内容的提问来源于stack exchange,提问作者lol
相关产品推荐
相关产品推荐

