0

在大量涌入中,我将时间替换为 gps 模块给出的时间。它将日期保存在 Unix 纪元时间中,例如 1432600783000。

当我尝试在 influxdb 中执行这样的查询时:

select * from items where id = '11111111111' and time > 1432080000000s and time < 1432177199000s group by (1d)

日期 1432080000000:格林威治标准时间:2015 年 5 月 20 日星期三 00:00:00 格林威治标准时间您的时区:2015 年 5 月 19 日 21:00:00 格林威治标准时间-3:00

日期 1432177199000:格林威治标准时间:2015 年 5 月 21 日星期四 02:59:59 GMT 您的时区:20/5/2015 23:59:59 GMT-3:00

它不返回任何内容,过滤日期的正确方法是什么,例如将点放在两个日期之间。

谢谢。

4

2 回答 2

1

您在查询中指定秒作为精度,但提供毫秒时间戳。1432080000000s表示 1432080000000 秒,即 47350 年的 10 月 22 日。

$ date -r 1432080000000 Thu Oct 22 16:00:00 PST 47350

此外,您不能GROUP BY在 SELECT 语句中执行没有聚合函数的操作。要求对所有点进行每日总结,然后再将结果汇总为每日值是没有意义的。删除 GROUP BY 子句以返回时间范围内的所有点。(您的 GROUP BY 语法也不正确。正确的语法是GROUP BY time(1d)。)

您的查询应该是:select * from items where id = '11111111111' and time > 1432080000s and time < 1432177199s

于 2015-05-26T22:25:05.347 回答
0

我必须在将数据发送到 UTC 时间之前进行更改,如下所示:

select * from items where id = '11111111111' and time > '2015-05-20 03:00:00' and time < '2015-05-20 03:00:00' + 1d  group by time(1d)

为此,我使用了像这样的时刻 js:

moment.utc(date).format('YYYY-MM-DD hh:mm:ss')

然后日期以 2015-05-20 03:00:00 的格式发送,这反映了我所在的时区。

于 2015-05-27T12:36:55.097 回答