forked from github/dataease
Merge pull request #4902 from dataease/pr@dev@fix_date
fix(视图): 修复mysql日期不能过滤的问题 #4891
This commit is contained in:
commit
1040fee2a6
@ -1064,8 +1064,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
whereName = String.format(MysqlConstants.DATE_FORMAT, originName, format);
|
||||
}
|
||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||
String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||
whereName = String.format(MysqlConstants.FROM_UNIXTIME, cast, format);
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
|
||||
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
|
||||
@ -1099,7 +1098,12 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
||||
whereValue = "'%" + value.get(0) + "%'";
|
||||
} 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");
|
||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||
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) {
|
||||
if(isTable){
|
||||
if (isTable) {
|
||||
return "SELECT COUNT(*) from " + String.format(MySQLConstants.KEYWORD_TABLE, sql);
|
||||
}else {
|
||||
} else {
|
||||
return "SELECT COUNT(*) from ( " + sqlFix(sql) + " ) DE_COUNT_TEMP";
|
||||
}
|
||||
}
|
||||
@ -1064,7 +1064,7 @@ 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")){
|
||||
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)));
|
||||
@ -1073,14 +1073,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
}
|
||||
}
|
||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||
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);
|
||||
}
|
||||
whereName = originName;
|
||||
}
|
||||
} else if (field.getDeType() == 2 || field.getDeType() == 3) {
|
||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) {
|
||||
@ -1112,7 +1105,12 @@ public class MysqlQueryProvider extends QueryProvider {
|
||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
|
||||
whereValue = "'%" + value.get(0) + "%'";
|
||||
} 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");
|
||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
||||
|
Loading…
Reference in New Issue
Block a user