在 gemfire 上,我有一个区域 ABC,并且在该区域内有一个 long 类型的列/字段。 在此字段中,我将值设置为 System.nanoTime()。 我想获取该区域 24 小时前的所有记录。 我怎样才能做到这一点?
目前我正在尝试进行如下查询,但它不起作用。
select regionTimestamp from /ABCRegion where (((((regionTimestamp-currentTimeStamp)/ 1000000000))/3600)>24)
任何帮助建议都必须受到赞赏。
最佳答案
注意:每当计算机重新启动时,System.nanoTime() 都会重置,因此将其存储在数据库中不是一个好的选择。这也意味着每台机器的时间都是本地的。
LocalDateTime.now()
是纳秒分辨率的挂钟,重启后不会重置,并且更有可能跨机器工作。
无论如何,您可以重新排列并计算
long now = ...
long aDayAgo = now - 86_400_000_000_000L; // 24 hours.
search for ... where regionTimestamp > aDayAgo
关于java - 从java中的System.nanoTime()计算小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53811479/