Cassandra Datastax Java驱动程序保存时间戳
我将datastax java驱动程序与mapperd一起使用 我想把历元另存为时间戳Cassandra Datastax Java驱动程序保存时间戳,cassandra,datastax-java-driver,Cassandra,Datastax Java Driver,我将datastax java驱动程序与mapperd一起使用 我想把历元另存为时间戳 device_id | timestamp -------------------------- 2323 | 1595077868994000 122112 | 2020-07-25 05:30:00.000000+0000 目前我正在使用ZoneDate时间。。但当我通过java代码插入记录时,它会保存为第1行所示的历元 insert into tab
device_id | timestamp
--------------------------
2323 | 1595077868994000
122112 | 2020-07-25 05:30:00.000000+0000
目前我正在使用ZoneDate时间。。但当我通过java代码插入记录时,它会保存为第1行所示的历元
insert into table (device_id , timestamp ) VALUES ('122112',toTimestamp(toDate(now()))) ;
然而,当我插入上面的查询时,它以更可读的格式存储时间戳
如何配置datastax驱动程序以可读格式存储时间戳
这是我的实体
public class Table {
@PartitionKey(value = 0)
private String deviceId;
private Instant timestamp;
Instant是唯一一个有编码到时间戳的。。我只想以毫秒的精度将时间戳存储到DB,并希望它在UI上易于读取
然后我使用对象映射器、Dao和刚刚调用的Save方法
@Dao
public interface TableDao {
@Insert
boolean save(Table table);
}
时间戳作为8字节长的数字存储在Cassandra中。所有到人类可读表示的转换都应该在客户端完成,例如,通过转换。同样的情况也发生在
cqlsh
-它接收8字节长的数字,并将其转换为文本表示
澄清后更新:看起来代码以微秒而不是毫秒的形式推送数据,导致未来的值是多个的,并且很可能会使Python的日期/时间表示重载是不是
时间戳
列不是时间戳
类型?如果不是,这是一个很好的理由(device_id text,timestamp timestamp its timestamp columnOk。那么相关的Java代码是什么样子的?我有更新代码。我没有找到Java.util.Date的任何编解码器,我可以直接使用它。我为什么在第1行和第2行看到2种不同的格式?2是我随查询插入的,1是随DataStax插入的,你在cql中看到了吗sh
?什么版本的Cassandra?这个毫秒数代表Fri Jan 03 52516 09:49:54
,我认为Python的实现只是过载了。我认为您需要删除最后三个零以获得可管理的内容(Sat Jul 18 2020 13:11:08
-如果我们不使用000
)。有时使用timestamp的中的值的时间戳是以微秒为单位,而实际时间戳值是以毫秒为单位,这令人困惑。明白了。但现在真正的问题是。我如何删除Instant数据类型中的最后3个0?或者更改cqlsh中的某些内容,以便它显示可读取的文本timestamp Instant正确表示数据戳a-我认为传入的数据以微秒为单位…您需要检查如何将数据分配给该即时
字段