Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra Datastax Java驱动程序保存时间戳_Cassandra_Datastax Java Driver - Fatal编程技术网

Cassandra Datastax Java驱动程序保存时间戳

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

我将datastax java驱动程序与mapperd一起使用

我想把历元另存为时间戳

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-我认为传入的数据以微秒为单位…您需要检查如何将数据分配给该
即时
字段