diff --git a/common/tskv/src/main/java/com/thing/common/tskv/service/tskv/TsKvPgServiceImpl.java b/common/tskv/src/main/java/com/thing/common/tskv/service/tskv/TsKvPgServiceImpl.java index ea4206f..0f3fb7e 100644 --- a/common/tskv/src/main/java/com/thing/common/tskv/service/tskv/TsKvPgServiceImpl.java +++ b/common/tskv/src/main/java/com/thing/common/tskv/service/tskv/TsKvPgServiceImpl.java @@ -361,13 +361,27 @@ public class TsKvPgServiceImpl extends ServiceImpl impleme .append(" generate_series ( TO_TIMESTAMP( ").append(startTime).append(" / 1000 ), ") .append(" TO_TIMESTAMP( ").append(endTime).append("/ 1000 ), INTERVAL '") .append(interval).append(" ").append(timeType).append("' ) AS T )"); - sql.append(" SELECT thing_code,attr_key,date_list.ts,ROUND(").append(agg).append("(CAST(val AS DECIMAL)), 2) as val FROM thing_ts_kv as tskv ") - .append(" JOIN date_list ON "); + sql.append(" SELECT thing_code,attr_key,date_list.ts,") + .append(" EXTRACT(YEAR FROM to_timestamp(date_list.ts / 1000)) AS year,") + .append(" EXTRACT(MONTH FROM to_timestamp(date_list.ts / 1000)) AS month,") + .append(" EXTRACT(DAY FROM to_timestamp(date_list.ts / 1000)) AS day,") + .append(" EXTRACT(HOUR FROM to_timestamp(date_list.ts / 1000)) AS hour,") + .append(" EXTRACT(MINUTE FROM to_timestamp(date_list.ts / 1000)) AS minute,") + .append(" EXTRACT(SECOND FROM to_timestamp(date_list.ts / 1000)) AS second ") + .append(",ROUND(") + .append(agg) + .append("(CAST(val AS DECIMAL)), 2) as val FROM thing_ts_kv as tskv ") + .append(" JOIN date_list ON "); sql.append(" EXTRACT ( epoch FROM date_trunc( '").append(timeType).append("', ( to_timestamp( tskv.ts / 1000 ) AT TIME ZONE'UTC+0' ) AT TIME ZONE'UTC+8' ) ) * 1000 "); sql.append("= date_list.ts GROUP BY thing_code,attr_key,date_list.ts ORDER BY date_list.ts "); }else{ - sql.append(" SELECT thing_code, attr_key, time as ts,val from (") - .append(" SELECT thing_code, attr_key, ") + sql.append(" SELECT thing_code, attr_key, time as ts,val, EXTRACT(YEAR FROM to_timestamp(time / 1000)) AS year, ") + .append(" EXTRACT(MONTH FROM to_timestamp(time / 1000)) AS month, ") + .append(" EXTRACT(DAY FROM to_timestamp(time / 1000)) AS day, ") + .append(" EXTRACT(HOUR FROM to_timestamp(time / 1000)) AS hour, ") + .append(" EXTRACT(MINUTE FROM to_timestamp(time / 1000)) AS minute, ") + .append(" EXTRACT(SECOND FROM to_timestamp(time / 1000)) AS second ") + .append(" from (SELECT thing_code, attr_key, ") .append(" (FLOOR((ts - ").append(startTime).append(" ) / ( "); if (TimeType.DAY.equals(timeType)) {