【问题标题】:Search times with Timestamp in milliseconds influxdb带有时间戳的搜索时间(以毫秒为单位) influxdb
【发布时间】:2015-05-26 02:11:17
【问题描述】:

在大量涌入中,我将时间替换为 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 您的时区:19/5/2015 21:00:00 GMT-3:00

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

它不返回任何东西,过滤日期的正确方法是什么,例如在两个日期之间带来点。

谢谢。

【问题讨论】:

    标签: javascript node.js influxdb


    【解决方案1】:

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

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

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

    您的查询应该是:select * from items where id = '11111111111' and time &gt; 1432080000s and time &lt; 1432177199s

    【讨论】:

      【解决方案2】:

      我必须在将数据发送到查询之前更改为 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 的格式发送,这反映了我所在的时区。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 2011-08-02
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        相关资源
        最近更新 更多