diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index 3a9582c031..8e769bb1e1 100644 --- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -8,7 +8,9 @@ import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.datasource.DorisConstants; +import io.dataease.plugins.common.constants.datasource.MySQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants; +import io.dataease.plugins.common.constants.engine.MysqlConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; @@ -1074,11 +1076,20 @@ public class DorisQueryProvider extends QueryProvider { if (field.getDeType() == 1) { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(DorisConstants.DATE_FORMAT, originName, format); + String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); + if(request.getOperator().equals("between")){ + whereName = date; + }else { + whereName = String.format(MySQLConstants.DATE_FORMAT, date, format); + } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - String cast = String.format(DorisConstants.CAST, originName, DorisConstants.DEFAULT_INT_FORMAT) + "/1000"; - whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format); + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format); + } } } else if (field.getDeType() == 0) { whereName = String.format(DorisConstants.CAST, originName, DorisConstants.VARCHAR); @@ -1115,7 +1126,7 @@ public class DorisQueryProvider extends QueryProvider { whereName = "upper(" + whereName + ")"; } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { if (request.getDatasetTableField().getDeType() == 1) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0)))); String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1)))); whereValue = String.format(DorisConstants.WHERE_BETWEEN, startTime, endTime); diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java index 3caac20d8f..3f1b4df0c4 100644 --- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java @@ -7,6 +7,8 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; +import io.dataease.plugins.common.constants.datasource.DorisConstants; +import io.dataease.plugins.common.constants.datasource.MySQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants; import io.dataease.plugins.common.constants.engine.MysqlConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; @@ -1061,10 +1063,20 @@ 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) { - whereName = String.format(MysqlConstants.DATE_FORMAT, originName, format); + String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); + if(request.getOperator().equals("between")){ + whereName = date; + }else { + whereName = String.format(MySQLConstants.DATE_FORMAT, date, format); + } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - whereName = originName; + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format); + } } } else if (field.getDeType() == 0 && field.getDeExtractType() == 0) { whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);