From 5f5f676a5cb2f8450a337eeb639efaa4ae06d615 Mon Sep 17 00:00:00 2001 From: junjun Date: Mon, 31 Jul 2023 11:29:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=B9=B4=E4=BB=BD?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query/mysql/MysqlQueryProvider.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index f40b6061aa..c9ed5d3d45 100644 --- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -1065,10 +1065,15 @@ public class MysqlQueryProvider extends QueryProvider { if (field.getDeType() == 1) { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - String date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); - if(request.getOperator().equals("between")){ + String date; + if (field.getType().equalsIgnoreCase("YEAR")) { + date = String.format(MySQLConstants.DATE_FORMAT, "CONCAT(" + originName + ",'-01-01')", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); + } else { + date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); + } + if (request.getOperator().equals("between")) { whereName = date; - }else { + } else { if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) { whereName = String.format(format, String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"), @@ -1080,11 +1085,11 @@ public class MysqlQueryProvider extends QueryProvider { } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - if(request.getOperator().equals("between")){ + if (request.getOperator().equals("between")) { whereName = originName; - }else { + } else { String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; - if (StringUtils.equalsIgnoreCase(request.getDateStyle(),"y_Q")){ + if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) { whereName = String.format(format, String.format(MysqlConstants.DATE_FORMAT, cast, "%Y"), String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, field, MysqlConstants.DEFAULT_DATE_FORMAT)));