UnixTime保存为int,如何查询为Date。卡桑德拉

UnixTime saved as int, how to query as Date. Cassandra CQLSH

我正在构建管道:sensorData - MQTT 代理 - Kafka - Cassandra。有效载荷以 JSON 形式传输,在 Cassandra 中保存时,日期保存为 int。查询CQLSH无法获取可读日期

CREATE TABLE sensordata.mqttsensordata (
  sensor text, 
  temperature float, 
  humidity int, 
  timestamp int, 
  battery int, 
  calibratedhumidity int, 
  datetime timestamp, 
  receiver text, 
  rssi float, 
  voltage float, 
  PRIMARY KEY (
    (sensor, temperature, humidity), 
    timestamp
 )

如下图查询数据库时,如何获取可读的时间戳?

Query table

唯一可以对 UNIX 时间戳进行操作的时间函数是 [min|max]timeuuid(mintimeuuid()maxtimeuuid())。您可以在时间戳列中使用其中任何一个,并将其嵌套在 toTimestamp() 函数中。

例如,如果我有 table 个采样时间:

> SELECT * FROM sample_times WHERE a=1;

 a | b                               | c                                    | d
---+---------------------------------+--------------------------------------+---------------
 1 | 2021-08-08 21:42:54.131000+0000 | 96594031-f891-11eb-b7bc-e12958c8479f | 1628458974131

d 是一个 bigint,我在其中存储了 UNIX 时间戳。我可以将其显示为这样的时间戳:

> SELECT totimestamp(mintimeuuid(d)) FROM sample_times WHERE a=1;

 system.totimestamp(system.mintimeuuid(d))
-------------------------------------------
           2021-08-08 21:42:54.131000+0000

(1 rows)