gpt4 book ai didi

python - 通过 Python 与 InfluxDB 了解 Unix 纪元时间的差异

转载 作者:行者123 更新时间:2023-12-01 02:57:25 26 4
gpt4 key购买 nike

我一直在尝试找出如何生成与 InfluxDB 中测量条目旁边相同的 Unix 纪元时间。

首先我要说的是,我尝试在所有测试中使用相同的日期和时间:

April 01, 2017 at 2:00AM CDT

如果我在 InfluxDB 中查看测量结果,我会看到如下时间戳:

1491030000000000000

如果我使用 - precision rfc3339 在 InfluxDB 中查看该测量结果,它将显示为:

2017-04-01T07:00:00Z

所以我可以看到 InfluxDB 使用 UTC

但是,我似乎无法通过 Python 生成相同的时间戳。

例如,我尝试了几种不同的方法:

>>> calendar.timegm(time.strptime('04/01/2017 02:00:00', '%m/%d/%Y %H:%M:%S'))
1491012000

>>> calendar.timegm(time.strptime('04/01/2017 07:00:00', '%m/%d/%Y %H:%M:%S'))
1491030000

>>> t = datetime.datetime(2017,04,01,02,00,00)
>>> print "Epoch Seconds:", time.mktime(t.timetuple())
Epoch Seconds: 1491030000.0

上面的最后两个示例至少看起来给了我相同的数字,但它比 InfluxDB 的短得多。我假设这与精度有关,我认为 InfluxDB 可以将事情精确到纳秒?

Python Result: 1491030000
Influx Result: 1491030000000000000

如果我尝试使用 Python 给出的结果将测量值输入 InfluxDB,它最终会显示为:

1491030000 = 1970-01-01T00:00:01.49103Z

所以我必须添加额外的九个 0。

我想有几种方法可以在 Python 中以编程方式执行此操作,如果它像在结果中添加九个 0 一样简单。但我想知道为什么我似乎无法在一次转换中生成相同的精度级别。

我有一个 CSV 文件,其中包含大量旧时间戳,很简单,“4/1/17 2:00”。每天凌晨 2 点进行一次测量。

我需要能够将其转换为 InfluxDB 需要“1491030000000000000”的正确格式来插入所有这些旧测量值。

更好地理解正在发生的事情及其原因比如何在 Python 中以编程方式解决这个问题更重要。尽管我很感激能够做到这两点的回复;解释问题以及我所看到的内容和原因,以及如何获取包含一列包含显示为“4/1/17 2:00”的时间戳的 CSV 并将其转换为显示为“1491030000000000000”的时间戳"在单独的文件或第二列中。

最佳答案

InfluxDB 可以被告知以秒精度返回纪元时间戳,以便更轻松地使用不支持开箱即用纳秒精度的工具/库(例如 Python)。

在查询参数中设置epoch=s以启用此功能。

参见influx HTTP API timestamp format documentation .

关于python - 通过 Python 与 InfluxDB 了解 Unix 纪元时间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44086236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com