InfluxDB Cli 中,time 默认显示为 19 位时间戳格式,平时查询起来特不方便,那么,如何设置成为我们人类能看懂的时间格式呢?
有两种方法可以调整InfluxDB的时间精度以进行查询:
命令行参数设置:
在运行InfluxDB命令行工具时,可以直接通过-precision
参数指定时间戳的显示精度。例如,使用RFC3339标准格式,命令如下:
influx -precision rfc3339
交互式Shell内设置:
如果已经进入InfluxDB的交互式Shell,可以先设置查询的时间精度,然后再执行查询命令。步骤如下:
Connected to http://localhost:8086 version 0.xx.x
InfluxDB shell 0.xx.x
> 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交互模式下,都可以灵活地调整时间精度,以便更好地匹配查询和数据分析的需求。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]}'
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。