期望时间戳值Cassandra的长或日期字符串表示

时间:2017-12-28 01:16:43

标签: json cassandra

我正在尝试使用下面的查询在Cassandra表中插入一行

INSERT INTO battery_time_series_by_producer JSON '{"timestamp":1514413581,"customer":"com.fetchcore-cloud.local","stream":"/sw8/sensor/battery","producer":"freight18","data":{"battery_level":1,"is_charging":true,"timestamp":1514413581}}';

我收到以下错误

Expected a long or a datestring representation of a timestamp value, but got an Integer: 1514413581

表中的字段时间戳确实是时间戳格式。但是,如果这只是JSON

,我该如何将其转换为long

我的Cassandra版本是3.11.1

1 个答案:

答案 0 :(得分:1)

Cassandra将尝试将json对象解析为最接近的数据类型,例如值1514413581将转换为Integer类型。如果你给出一个更大的数字,它将被解析为Long。

请注意,自标准基准时间epoch以来,该时间戳类型表示的数字毫秒。示例中的值表示1970年的时间。

简而言之,它要么使用字符串格式(例如“1514413581”),要么在cql语句中传递最近的时间戳值(后来自动转换为Long)。希望它有所帮助。