我需要开发一个InfluxDB时间序列。时间序列需要包含以下信息:
我目前的想法是保存上述" date"字段作为单独的"列"在时间序列中,我可以使用"其中"使用该日期过滤数据的子句。但是,我正在努力解决这个问题。 InfluxDB是否支持任何类型的日期或日期/时间字段?对于"时间"字段似乎只是使用毫秒。但是,如果我在具有不同名称的字段中尝试相同,则正常时间查询不起作用。例如:
select * from myseries where time > now() - 1d
以上查询可以正常使用。
VS
select * from myseries where date > now() - 1d
此查询将失败并显示错误,因为它似乎不知道如何处理" date"作为时间价值。
这种情况下的日期有更好的表示吗?
答案 0 :(得分:2)
InfluxDB数据类型可以是浮点数,整数,布尔值和字符串。 [^]
字段是一个特殊例外。
您可以使用表示日期字段的count-since-epoch的整数。像now()这样的好方便的功能虽然看起来不起作用(使用v0.13):
time
使用insert test_dates date_int=1573405622000000000i,desc="years from now"
insert test_dates date_int=1373405661000000000i,desc="years ago"
now()
给出:
select * from test_dates where date_int > now()
和
name: test_dates
time date_int desc
1473404302801938064 1573405622000000000 years from now
1473404315927493772 1373405661000000000 years ago
给出:
select * from test_dates where date_int < now()
似乎每个name: test_dates
time date_int desc
1473462286404084162 1573405622000000000 years from now
1473462286408231540 1373405661000000000 years ago
都大于且小于date_int
因此,如果使用整数,则比较不是语法错误,但不会按照我们想要的方式运行。
解决此问题的一种方法是在前端应用程序中创建自己的日期到int转换。然后前端的日期比较是InfluxDB中的int比较。笨重,但这些是我们拥有的数据类型。
InfluxDB中存储的日期可以是单个基于纪元的int,也可以在InfluxDB中存储年,月,日的单独int字段。在后一种情况下,查询更大更慢,但更容易阅读和调试。
祝你好运!答案 1 :(得分:-2)
如果您可以将日期保存在纪元值中,或者您可以使用“YYYY-MM-DD HH:MM:SS.mmm”格式,则更容易。以下查询示例来自文档。
select value from response_times
where time > '2013-08-12 23:32:01.232' and time < '2013-08-13';