From 7b417aa4f1b7ef4a1c3b79b4280d2bbe573a77b7 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 12 Jan 2026 13:46:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(clickhouse):=20=E4=BF=AE=E5=A4=8D=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=97=B6=E9=97=B4=E8=8C=83=E5=9B=B4=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了小时统计查询中的时间范围条件,添加空值检查 - 修改了天统计查询中的时间范围条件,添加空值检查 - 将固定的时间范围查询改为可选的时间范围过滤 - 避免当开始或结束时间为空时的SQL语法错误 - 确保查询参数的灵活性和安全性 --- .../impl/ClickHouseStatsQueryServiceImpl.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ycwl/basic/clickhouse/service/impl/ClickHouseStatsQueryServiceImpl.java b/src/main/java/com/ycwl/basic/clickhouse/service/impl/ClickHouseStatsQueryServiceImpl.java index 1041d3b3..8a015624 100644 --- a/src/main/java/com/ycwl/basic/clickhouse/service/impl/ClickHouseStatsQueryServiceImpl.java +++ b/src/main/java/com/ycwl/basic/clickhouse/service/impl/ClickHouseStatsQueryServiceImpl.java @@ -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)");