Merge pull request #5815 from dataease/pr@dev@fix_date

fix: 修复日期过滤不包含起始时间的问题
This commit is contained in:
Junjun 2023-08-01 15:28:06 +08:00 committed by GitHub
commit 7cbf326a6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1072,7 +1072,7 @@ public class MysqlQueryProvider extends QueryProvider {
date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); date = String.format(MySQLConstants.DATE_FORMAT, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
} }
if (request.getOperator().equals("between")) { if (request.getOperator().equals("between")) {
whereName = date; whereName = String.format(MySQLConstants.UNIX_TIMESTAMP, date) + "*1000";
} else { } else {
if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) { if (StringUtils.equalsIgnoreCase(request.getDateStyle(), "y_Q")) {
whereName = String.format(format, whereName = String.format(format,
@ -1131,15 +1131,13 @@ public class MysqlQueryProvider extends QueryProvider {
whereName = "upper(" + whereName + ")"; whereName = "upper(" + whereName + ")";
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) { } else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
if (request.getDatasetTableField().getDeType() == 1) { if (request.getDatasetTableField().getDeType() == 1) {
if (request.getDatasetTableField().getDeExtractType() == 2 if (request.getDatasetTableField().getDeExtractType() == 1) {
|| request.getDatasetTableField().getDeExtractType() == 3
|| request.getDatasetTableField().getDeExtractType() == 4) {
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
} else {
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)) - 1000));
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1)))); String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
whereValue = String.format(MySQLConstants.WHERE_BETWEEN, startTime, endTime); whereValue = String.format(MySQLConstants.WHERE_BETWEEN, startTime, endTime);
} else {
whereValue = String.format(MysqlConstants.WHERE_BETWEEN, value.get(0), value.get(1));
} }
} else { } else {
whereValue = String.format(MySQLConstants.WHERE_BETWEEN, value.get(0), value.get(1)); whereValue = String.format(MySQLConstants.WHERE_BETWEEN, value.get(0), value.get(1));