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