我在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',那么它就工作了。
我要把数据类型改为“文本”并把时间保存为字符串吗。
2条答案
按热度按时间hiz5n14c1#
你可以绘制Map
Instant
进入Cassandra的房间timestamp
如果您使用java驱动程序中的可选编解码器,如文档中所述:https://docs.datastax.com/en/developer/java-driver/3.6/manual/custom_codecs/extras/#jdk-8添加到pom.xml:
并在创建时注册编解码器
Cluster
对象:pvcm50d12#
你想把现在的时间留给Cassandra吗?
LocalTime localTime = LocalTime.now();
您正在代码中提取上面的一些信息ChronoField.NANO_OF_SECOND
或者.getHour()
. 完全使用当地时间。