从instant获取时间并保存在cassandra中

zaqlnxep  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(463)

我在cassandra表中有数据类型为“time”的“eventtime”字段。我正在尝试保存当前utc时间,但无法保存。我在java中将字段声明为-

private Long eventTime;

尝试了几种从即时获取时间的方法,但保存了不正确的数据。
瞬间.now(时钟).getlong(计时场.nano秒)
在Cassandra保存了“00:00:00.093563694”
localdatetime.ofinstant(instant.now(clock),zoneoffset.utc).gethour()
在cassandra中保存了“00:00:00.00000000 1”
如果我在cql中直接运行insert查询,字符串值为'16:15:09.049909',那么它就工作了。
我要把数据类型改为“文本”并把时间保存为字符串吗。

hiz5n14c

hiz5n14c1#

你可以绘制Map Instant 进入Cassandra的房间 timestamp 如果您使用java驱动程序中的可选编解码器,如文档中所述:https://docs.datastax.com/en/developer/java-driver/3.6/manual/custom_codecs/extras/#jdk-8
添加到pom.xml:

<dependency>
  <groupId>com.datastax.cassandra</groupId>  
  <artifactId>cassandra-driver-extras</artifactId> 
  <version>3.6.0</version> 
 </dependency>

并在创建时注册编解码器 Cluster 对象:

import com.datastax.driver.extras.codecs.jdk8.InstantCodec; 
import java.time.Instant; 
...
cluster.getConfiguration().getCodecRegistry()
     .register(InstantCodec.instance);
pvcm50d1

pvcm50d12#

你想把现在的时间留给Cassandra吗? LocalTime localTime = LocalTime.now(); 您正在代码中提取上面的一些信息 ChronoField.NANO_OF_SECOND 或者 .getHour() . 完全使用当地时间。

相关问题