开发者社区> 问答> 正文

如何设置成为我们人类能看懂的时间格式呢?

InfluxDB Cli 中,time 默认显示为 19 位时间戳格式,平时查询起来特不方便,那么,如何设置成为我们人类能看懂的时间格式呢?

展开
收起
OSC开源社区 2024-06-13 08:01:40 21 0
2 条回答
写回答
取消 提交回答
  • 有两种方法可以调整InfluxDB的时间精度以进行查询:

    1. 命令行参数设置
      在运行InfluxDB命令行工具时,可以直接通过-precision参数指定时间戳的显示精度。例如,使用RFC3339标准格式,命令如下:

      influx -precision rfc3339
      
    2. 交互式Shell内设置
      如果已经进入InfluxDB的交互式Shell,可以先设置查询的时间精度,然后再执行查询命令。步骤如下:

      • 首先,确认与InfluxDB服务器的连接信息。
        Connected to http://localhost:8086 version 0.xx.x
        InfluxDB shell 0.xx.x
        
      • 设置时间精度为RFC3339格式:
        > precision rfc3339
        
      • 执行具体的查询,这里查询logInfo表中用户名为fastjrun且时间在过去30分钟内(考虑亚洲/上海时区)的所有记录:
        > SELECT * FROM "logInfo" WHERE userName = 'fastjrun' AND time > now() - 30m tz('Asia/Shanghai')
        
        查询结果示例:
        name: logInfo
        time                   userName    viewTotal
        ----                   --------    ----------
        2021-04-27T08:10:00.95+08:00 fastjrun    34922
        2021-04-27T08:20:00.864+08:00 fastjrun    34922
        2021-04-27T08:30:00.739+08:00 fastjrun    34922
        
        这样,无论是通过命令行参数还是在Shell交互模式下,都可以灵活地调整时间精度,以便更好地匹配查询和数据分析的需求。
    2024-06-13 17:48:53
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    InfluxDB 2.x,可以使用 Flux 查询语言,它默认返回 ISO 8601 格式的时间。如果需要更改时间格式,可以使用 date 包来进行格式化。

    import "date"
    
    from(bucket: "my_bucket")
      |> range(start: -1h)
      |> map(fn: (r) => ({ r with _time: date.format(v: r._time, layout: "2006-01-02 15:04:05") }))
    

    InfluxDB 1.x,在 CLI 中没有直接设置时间格式的选项,但可以通过输出到文件并使用其他工具进行格式化。可以使用 jq 等工具处理 JSON 格式的输出:

    influx -database 'mydb' -execute 'SELECT * FROM "measurement_name"' -format 'json' | jq '.results[0].series[0].values[] | {time: .[0] | tonumber | todate, value: .[1]}'

    2024-06-13 09:05:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载