错误现象 :
Unparseable date: “xxx-xxx-xxx“
查询时间格式 不对
“time”:“2021-10-11T14:12:59.686Z”
“time”:“2021-10-11T14:14:46.236Z”
“time”:“2021-10-11T14:16:57.564Z”
“time”:“2021-10-11T15:56:16.155Z”
“time”:“2021-10-11T15:57:08.884Z”
解决问题
插入方法
import org.influxdb.InfluxDB;
import org.influxdb.dto.Point;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.concurrent.TimeUnit;
/**
* 添加数据
* @param object
*/
public void add(Object object){
Point.Builder builder = Point.measurementByPOJO(object.getClass());
// 所有属性转换为tag添加到point中
// 调用time方法将 UTC时间转换为北京时间 设置进去
Point point = builder
.addFieldsFromPOJO(object)
.time(LocalDateTime.now()
.plusHours(8)
.toInstant(ZoneOffset.of("+8"))
.toEpochMilli(), TimeUnit.MILLISECONDS)
.build();
// 存储的数据库名称
influxDB.setDatabase(dbName);
// 插入到表(Measurement)中
influxDB.write(point);
influxDB.close();
}
查询数据
import org.influxdb.impl.InfluxDBResultMapper;
import org.influxdb.dto.QueryResult;
/**
* 通用查询数据方法
* @param sql sql 语句
* @param clazz 类 class
* @param <T>
* @return
*/
public <T> List<T> query(String sql, Class<T> clazz){
QueryResult queryResult = influxDB.query(new Query(sql, dbName));
influxDB.close();
InfluxDBResultMapper resultMapper = new InfluxDBResultMapper();
return resultMapper.toPOJO(queryResult, clazz);
}
查询时间转换
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
try {
//2020-09-19T09:58:34.926Z 转换为 2020-09-19 09:58:34 格式
SimpleDateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
SimpleDateFormat defaultFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = utcFormat.parse(packInfo.getTime());
packInfo.setTime(defaultFormat.format(date));
} catch (ParseException e) {
e.printStackTrace();
}