datastax java驱动程序保存时间戳

pqwbnv8z  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(327)

我使用的是带有mapperd的datastax java驱动程序
我想把epoch保存为timestamp

device_id | timestamp                       
--------------------------
  2323 | 1595077868994000 
122112 | 2020-07-25 05:30:00.000000+0000

目前我使用的是分区日期时间。。但当我通过java代码插入记录时,它会保存为epoch,如第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上易于读取
然后我使用对象Map器、dao和刚才调用的save方法

@Dao
public interface TableDao {

@Insert
boolean save(Table table);
}
zc0qhyus

zc0qhyus1#

时间戳作为8字节长的数字存储在cassandra中。所有到人类可读表示的转换都应该在客户端完成,例如,通过datetimeformatter进行转换。同样的情况也发生在 cqlsh -它接收8字节长的数字,并将其转换为文本表示。
澄清后更新:看起来代码以微秒(而不是毫秒)的形式推送数据,结果是未来的值非常多,很可能会使python的日期/时间表示形式过载

相关问题