tdengine避坑(一)时间查询

开发语言java

一、客户端设置的时区需要与server端一致


 Properties connProps = new Properties();
            connProps.setProperty(TSDBDriver.PROPERTY_KEY_USER, username);
            connProps.setProperty(TSDBDriver.PROPERTY_KEY_PASSWORD, password);
            connProps.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
            connProps.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
            connProps.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
            return DriverManager.getConnection(url, connProps);


设置时区为 UTC-8

二、查询语句

查询时间格式不可以是: yyyy-MM-dd HH:mm:ss,查询出是时间是错误的

select _wstart, _wend, SUM(current) current from meters where ts > '2023-05-28 11:05:45' and ts < '2023-05-29 11:05:45' INTERVAL(60m) 05-29 11:05:45' INTERVAL(60m) FILL(VALUE,0.0);

正确的时间格式是:2023-05-29T00:00:00+0800 

java写法:


SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

注意:这里的T需要加引号,不然会报错,+0800会自己加上去


select _wstart, _wend, SUM(current) current from meters where ts > '2023-05-29T00:00:00+0800' and ts < '2023-05-29T23:59:59+0800' INTERVAL(60m) FILL(VALUE,0.0);

这样查询出的时间为正确的时间。

参考:一文吃透 TDengine 上的时区设置


标签: java tdengine
2023.5.29   /   热度:1212   /   分类: java

发表评论:

©地球仪的BLOG  |  Powered by Emlog