如何从 InfluxDB Node-RED 中获取特定时间段的数据
How to get data from a especif Time period in InfluxDB Node-RED
我正在尝试从 InfluxDB v1.x 中读取数据,但仅限于特定时间段内,示例:
获取 temper01
从 2021-11-09/14:00:00 到 2021-11-10/14:00:00 的值。
我知道这个代码是可行的:
"WHERE time >= '2021-11-09T14:00:00Z' AND time <= '2021-11-10T14:00:00Z'"
但我想知道是否可以使用变量而不是直接时间戳。
我试过这个代码:
msg.query = "SELECT time , Temper01, Temper02, Temper03 FROM "
+ global.get("ID_device1")
+ " WHERE time >= "
+ msg.payload;
+ " AND time <= '2021-11-18T00:00:00.000Z' " ;
但是 msg.payload
值并不重要,它只是从存储的第一个数据中获取数据,当我尝试单引号 msg.payload
时,我收到 invalid operation: time and *influxql.VarRef are not compatible"
错误消息。
假设 msg.paylaod
看起来像 2020-11-18T00:00:00.000Z
那么您没有引用要插入到查询中的时间字符串。
它应该是这样的:
msg.query = "SELECT time , Temper01, Temper02, Temper03 FROM "
+ global.get("ID_device1")
+ " WHERE time >= '"
+ msg.payload;
+ "' AND time <= '2021-11-18T00:00:00.000Z' " ;
区别在于第 3 行字符串末尾的 '
和最后一行字符串开头的 '
。
直接比较工作版本和不工作的版本会显示这一点。
我正在尝试从 InfluxDB v1.x 中读取数据,但仅限于特定时间段内,示例:
获取 temper01
从 2021-11-09/14:00:00 到 2021-11-10/14:00:00 的值。
我知道这个代码是可行的:
"WHERE time >= '2021-11-09T14:00:00Z' AND time <= '2021-11-10T14:00:00Z'"
但我想知道是否可以使用变量而不是直接时间戳。
我试过这个代码:
msg.query = "SELECT time , Temper01, Temper02, Temper03 FROM "
+ global.get("ID_device1")
+ " WHERE time >= "
+ msg.payload;
+ " AND time <= '2021-11-18T00:00:00.000Z' " ;
但是 msg.payload
值并不重要,它只是从存储的第一个数据中获取数据,当我尝试单引号 msg.payload
时,我收到 invalid operation: time and *influxql.VarRef are not compatible"
错误消息。
假设 msg.paylaod
看起来像 2020-11-18T00:00:00.000Z
那么您没有引用要插入到查询中的时间字符串。
它应该是这样的:
msg.query = "SELECT time , Temper01, Temper02, Temper03 FROM "
+ global.get("ID_device1")
+ " WHERE time >= '"
+ msg.payload;
+ "' AND time <= '2021-11-18T00:00:00.000Z' " ;
区别在于第 3 行字符串末尾的 '
和最后一行字符串开头的 '
。
直接比较工作版本和不工作的版本会显示这一点。