fix(clickhouse): 修复查询时间范围条件处理逻辑

- 修改了小时统计查询中的时间范围条件,添加空值检查
- 修改了天统计查询中的时间范围条件,添加空值检查
- 将固定的时间范围查询改为可选的时间范围过滤
- 避免当开始或结束时间为空时的SQL语法错误
- 确保查询参数的灵活性和安全性
This commit is contained in:
2026-01-12 13:46:51 +08:00
parent 6ca7dceb0e
commit 7b417aa4f1

View File

@@ -357,8 +357,12 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
sql.append(") ");
sql.append("AND r.action = 'LAUNCH' ");
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
sql.append("AND s.create_time BETWEEN ").append(formatDateTime(query.getStartTime()));
sql.append(" AND ").append(formatDateTime(query.getEndTime())).append(" ");
if (query.getStartTime() != null) {
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
}
if (query.getEndTime() != null) {
sql.append("AND s.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
}
sql.append("GROUP BY toStartOfHour(s.create_time) ");
sql.append("ORDER BY toStartOfHour(s.create_time)");
@@ -382,8 +386,12 @@ public class ClickHouseStatsQueryServiceImpl implements StatsQueryService {
sql.append(") ");
sql.append("AND r.action = 'LAUNCH' ");
sql.append("AND JSONExtractInt(r.params, 'scene') IN (1047, 1048, 1049) ");
sql.append("AND s.create_time BETWEEN ").append(formatDateTime(query.getStartTime()));
sql.append(" AND ").append(formatDateTime(query.getEndTime())).append(" ");
if (query.getStartTime() != null) {
sql.append("AND s.create_time >= ").append(formatDateTime(query.getStartTime())).append(" ");
}
if (query.getEndTime() != null) {
sql.append("AND s.create_time <= ").append(formatDateTime(query.getEndTime())).append(" ");
}
sql.append("GROUP BY toStartOfDay(s.create_time) ");
sql.append("ORDER BY toStartOfDay(s.create_time)");