forked from github/dataease
fix(视图): 修复mysql日期不能过滤的问题 #4891
This commit is contained in:
parent
760c25b07a
commit
415eebef73
@ -1064,8 +1064,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
whereName = String.format(MysqlConstants.DATE_FORMAT, originName, format);
|
whereName = String.format(MysqlConstants.DATE_FORMAT, originName, format);
|
||||||
}
|
}
|
||||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||||
String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000";
|
whereName = originName;
|
||||||
whereName = String.format(MysqlConstants.FROM_UNIXTIME, cast, format);
|
|
||||||
}
|
}
|
||||||
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
|
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
|
||||||
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
|
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
|
||||||
@ -1099,7 +1098,12 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
||||||
whereValue = "'%" + value.get(0) + "%'";
|
whereValue = "'%" + value.get(0) + "%'";
|
||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
||||||
if (request.getDatasetTableField().getDeType() == 1) {
|
if (request.getDatasetTableField().getDeType() == 1
|
||||||
|
&& (request.getDatasetTableField().getDeExtractType() == 2
|
||||||
|
|| request.getDatasetTableField().getDeExtractType() == 3
|
||||||
|
|| request.getDatasetTableField().getDeExtractType() == 4)) {
|
||||||
|
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
|
||||||
|
} else 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");
|
||||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||||
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
||||||
|
@ -813,9 +813,9 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getTotalCount(boolean isTable, String sql, Datasource ds) {
|
public String getTotalCount(boolean isTable, String sql, Datasource ds) {
|
||||||
if(isTable){
|
if (isTable) {
|
||||||
return "SELECT COUNT(*) from " + String.format(MySQLConstants.KEYWORD_TABLE, sql);
|
return "SELECT COUNT(*) from " + String.format(MySQLConstants.KEYWORD_TABLE, sql);
|
||||||
}else {
|
} else {
|
||||||
return "SELECT COUNT(*) from ( " + sqlFix(sql) + " ) DE_COUNT_TEMP";
|
return "SELECT COUNT(*) from ( " + sqlFix(sql) + " ) DE_COUNT_TEMP";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1064,7 +1064,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
if (field.getDeType() == 1) {
|
if (field.getDeType() == 1) {
|
||||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||||
if (StringUtils.equalsIgnoreCase(request.getDateStyle(),"y_Q")){
|
if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) {
|
||||||
whereName = String.format(format,
|
whereName = String.format(format,
|
||||||
String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"),
|
String.format(MysqlConstants.DATE_FORMAT, originName, "%Y"),
|
||||||
String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, originName, MysqlConstants.DEFAULT_DATE_FORMAT)));
|
String.format(MysqlConstants.QUARTER, String.format(MysqlConstants.DATE_FORMAT, originName, MysqlConstants.DEFAULT_DATE_FORMAT)));
|
||||||
@ -1073,14 +1073,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||||
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
|
whereName = originName;
|
||||||
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) {
|
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||||
@ -1112,7 +1105,12 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
||||||
whereValue = "'%" + value.get(0) + "%'";
|
whereValue = "'%" + value.get(0) + "%'";
|
||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
||||||
if (request.getDatasetTableField().getDeType() == 1) {
|
if (request.getDatasetTableField().getDeType() == 1
|
||||||
|
&& (request.getDatasetTableField().getDeExtractType() == 2
|
||||||
|
|| request.getDatasetTableField().getDeExtractType() == 3
|
||||||
|
|| request.getDatasetTableField().getDeExtractType() == 4)) {
|
||||||
|
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
|
||||||
|
} else if (request.getDatasetTableField().getDeType() == 1) {
|
||||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||||
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
||||||
|
Loading…
Reference in New Issue
Block a user