diff --git a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java index 4dd687b3de..4899c0da2a 100644 --- a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java @@ -1122,19 +1122,32 @@ public class Db2QueryProvider extends QueryProvider { } else { originName = String.format(Db2Constants.STR_TO_DATE, originName); } - whereName = String.format(Db2Constants.DATE_FORMAT, originName, format); + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + whereName = String.format(Db2Constants.DATE_FORMAT, originName, format); + } } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - String cast = String.format(Db2Constants.CAST, originName, Db2Constants.DEFAULT_INT_FORMAT); - whereName = String.format(Db2Constants.FROM_UNIXTIME, cast, format); + if(request.getOperator().equals("between")){ + String cast = String.format(Db2Constants.CAST, originName, Db2Constants.DEFAULT_INT_FORMAT); + whereName = String.format(Db2Constants.FROM_UNIXTIME, cast, Db2Constants.DEFAULT_DATE_FORMAT); + }else { + String cast = String.format(Db2Constants.CAST, originName, Db2Constants.DEFAULT_INT_FORMAT); + whereName = String.format(Db2Constants.FROM_UNIXTIME, cast, format); + } } if (field.getDeExtractType() == DeTypeConstants.DE_TIME) { - if (field.getType().equalsIgnoreCase("TIME")) { - whereName = String.format(Db2Constants.FORMAT_TIME, originName, format); - } else if (field.getType().equalsIgnoreCase("DATE")) { - whereName = String.format(Db2Constants.FORMAT_DATE, originName, format); - } else { + if(request.getOperator().equals("between")){ whereName = originName; + }else { + if (field.getType().equalsIgnoreCase("TIME")) { + whereName = String.format(Db2Constants.FORMAT_TIME, originName, format); + } else if (field.getType().equalsIgnoreCase("DATE")) { + whereName = String.format(Db2Constants.FORMAT_DATE, originName, format); + } else { + whereName = originName; + } } } } else if (field.getDeType() == 2 || field.getDeType() == 3) { diff --git a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java index c71832f84a..463530d966 100644 --- a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java @@ -1038,14 +1038,31 @@ public class HiveQueryProvider extends QueryProvider { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(HiveConstants.DATE_FORMAT, originName, format); + String date = String.format(HiveConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); + if(request.getOperator().equals("between")){ + whereName = date; + }else { + whereName = String.format(HiveConstants.DATE_FORMAT, date, format); + } } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { + if(request.getOperator().equals("between")){ + String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(HiveConstants.FROM_UNIXTIME, cast, HiveConstants.DEFAULT_DATE_FORMAT); + }else { + String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(HiveConstants.FROM_UNIXTIME, cast, format); + } String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; whereName = String.format(HiveConstants.FROM_UNIXTIME, cast, format); } if (field.getDeExtractType() == DeTypeConstants.DE_TIME) { - whereName = String.format(HiveConstants.DATE_FORMAT, originName, format); + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + whereName = String.format(HiveConstants.DATE_FORMAT, originName, format); + } + } } else if (field.getDeType() == 2 || field.getDeType() == 3) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { diff --git a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java index 1d09645722..2cdb8c682c 100644 --- a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java @@ -1035,14 +1035,27 @@ public class ImpalaQueryProvider extends QueryProvider { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT, format); + if(request.getOperator().equals("between")){ + whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT, ImpalaConstants.DEFAULT_DATE_FORMAT); + }else { + whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT, format); + } } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; - whereName = String.format(ImpalaConstants.FROM_UNIXTIME, cast, format); + if(request.getOperator().equals("between")){ + String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(ImpalaConstants.FROM_UNIXTIME, cast, ImpalaConstants.DEFAULT_DATE_FORMAT); + }else { + String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; + whereName = String.format(ImpalaConstants.FROM_UNIXTIME, cast, format); + } } if (field.getDeExtractType() == DeTypeConstants.DE_TIME) { - whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, format); + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, format); + } } } else if (field.getDeType() == 2 || field.getDeType() == 3) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { 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 60249dd169..06a4821dc3 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,16 +1065,33 @@ 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) { - if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) { - whereName = String.format(format, - String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"), - String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, originName, MysqlConstants.DEFAULT_DATE_FORMAT))); - } else { - 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 { + if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) { + whereName = String.format(format, + String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"), + String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, originName, MysqlConstants.DEFAULT_DATE_FORMAT))); + } 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"; + 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))); + } else { + whereName = String.format(MySQLConstants.DATE_FORMAT, cast, format); + } + } } } else if (field.getDeType() == 2 || field.getDeType() == 3) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { diff --git a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java index 9bc77ab309..1a9c0e078e 100644 --- a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java @@ -1208,14 +1208,14 @@ public class OracleQueryProvider extends QueryProvider { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if(!request.getOperator().equals("between")){ whereName = String.format(OracleConstants.TO_CHAR, String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT), format); }else { whereName = String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if(!request.getOperator().equals("between")){ String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000"; whereName = String.format(OracleConstants.FROM_UNIXTIME, cast, format); }else { @@ -1224,7 +1224,7 @@ public class OracleQueryProvider extends QueryProvider { } } if (field.getDeExtractType() == 1) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if(!request.getOperator().equals("between")){ whereName = String.format(OracleConstants.TO_CHAR, originName, format); }else { whereName = originName; diff --git a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java index b33dbb7190..a7f9e17295 100644 --- a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java @@ -1074,30 +1074,29 @@ public class PgQueryProvider extends QueryProvider { if (field.getDeType() == 1) { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { - String timestamp = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); + String timestamp = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); + if(request.getOperator().equals("between")){ + whereName = timestamp; + }else { whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); - } else { - whereName = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { - String cast = String.format(PgConstants.CAST, originName, "bigint"); - String timestamp = String.format(PgConstants.FROM_UNIXTIME, cast); + String cast = String.format(PgConstants.CAST, originName, "bigint"); + String timestamp = String.format(PgConstants.FROM_UNIXTIME, cast); + if(request.getOperator().equals("between")){ + whereName = timestamp; + }else { whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); - } else { - String cast = String.format(PgConstants.CAST, originName, "bigint"); - whereName = String.format(PgConstants.FROM_UNIXTIME, cast); } - } if (field.getDeExtractType() == 1) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { - whereName = String.format(PgConstants.DATE_FORMAT, originName, format); - } else { + if(request.getOperator().equals("between")){ whereName = originName; + }else { + whereName = String.format(PgConstants.DATE_FORMAT, originName, format); } + } } else if (field.getDeType() == 2 || field.getDeType() == 3) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { diff --git a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java index 33156e439d..56543a16a3 100644 --- a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java @@ -1070,15 +1070,27 @@ public class RedshiftQueryProvider extends QueryProvider { String format = transDateFormat(request.getDateStyle(), request.getDatePattern()); if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { String timestamp = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); - whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); + if(request.getOperator().equals("between")){ + whereName = timestamp; + }else { + whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); + } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(PgConstants.CAST, originName, "bigint"); String timestamp = String.format(PgConstants.FROM_UNIXTIME, cast); - whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); + if(request.getOperator().equals("between")){ + whereName = timestamp; + }else { + whereName = String.format(PgConstants.DATE_FORMAT, timestamp, format); + } } if (field.getDeExtractType() == 1) { - whereName = String.format(PgConstants.DATE_FORMAT, originName, format); + if(request.getOperator().equals("between")){ + whereName = originName; + }else { + whereName = String.format(PgConstants.DATE_FORMAT, originName, format); + } } } else if (field.getDeType() == 2 || field.getDeType() == 3) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { diff --git a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java index 1ae1bf7049..4d5db44726 100644 --- a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java @@ -1098,14 +1098,14 @@ public class SqlserverQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if (!StringUtils.containsIgnoreCase(request.getOperator(), "between")) { whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT)); }else { whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if (!StringUtils.containsIgnoreCase(request.getOperator(), "between")) { String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000"); whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), cast); }else { @@ -1114,7 +1114,7 @@ public class SqlserverQueryProvider extends QueryProvider { } } if (field.getDeExtractType() == 1) { - if (StringUtils.containsIgnoreCase(request.getOperator(), "in")) { + if (!StringUtils.containsIgnoreCase(request.getOperator(), "between")) { whereName = transDateFormat(request.getDateStyle(), request.getDatePattern(), originName); }else { whereName = originName;