diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class index 9f8dfb8..1361e14 100644 Binary files a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class and b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/classes/java/main/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.class differ diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin index b49aa0b..edabc98 100644 Binary files a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin and b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java index f156346..327eec9 100644 --- a/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java +++ b/com.awspaas.user.apps.bnbm.datalinkup/com.awspaas.user.apps.bnbm.datalinkup/src/main/java/com/awspaas/user/apps/bnbm/datalinkup/service/impl/SaleDataSyncServiceImpl.java @@ -1213,43 +1213,43 @@ public class SaleDataSyncServiceImpl implements DataSyncService { String querySql; if ("ORACLE".equalsIgnoreCase(DBname)) { querySql = "SELECT t1.* FROM " + tableName + " t1 " + - "JOIN (SELECT TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH') AS month_start, " + - "MAX(TO_DATE(" + timeField + ", 'YYYY-MM-DD')) AS max_date " + - "FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " JOIN (SELECT TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH') AS month_start, " + + " MAX(TO_DATE(" + timeField + ", 'YYYY-MM-DD')) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + " AND TO_DATE(" + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD') " + - "GROUP BY TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH')) t2 " + - "ON TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') = t2.max_date " + - "WHERE " + conditionBuilder.toString() + + " GROUP BY TRUNC(TO_DATE(" + timeField + ", 'YYYY-MM-DD'), 'MONTH')) t2 " + + " ON TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') = t2.max_date " + + " WHERE " + conditionBuilder.toString() + " AND TO_DATE(t1." + timeField + ", 'YYYY-MM-DD') BETWEEN TO_DATE('" + startDate + "', 'YYYY-MM-DD') AND TO_DATE('" + endDate + "', 'YYYY-MM-DD')"; } else if ("POSTGRESQL".equalsIgnoreCase(DBname) || "GAUSS".equalsIgnoreCase(DBname)) { querySql = "SELECT t1.* FROM " + tableName + " t1 " + - "JOIN (SELECT DATE_TRUNC('MONTH', " + timeField + "::DATE) AS month_start, " + - "MAX(" + timeField + "::DATE) AS max_date " + - "FROM " + tableName + " WHERE "+conditionBuilder.toString()+" AND full_date::DATE BETWEEN '"+startDate+"' AND '"+endDate+"' " + - "GROUP BY DATE_TRUNC('MONTH', " + timeField + "::DATE)) t2 " + - "ON t1." + timeField + "::DATE = t2.max_date " + - "WHERE " +conditionBuilder.toString()+ + " JOIN (SELECT DATE_TRUNC('MONTH', " + timeField + "::DATE) AS month_start, " + + " MAX(" + timeField + "::DATE) AS max_date " + + " FROM " + tableName + " WHERE "+conditionBuilder.toString()+" AND "+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"' " + + " GROUP BY DATE_TRUNC('MONTH', " + timeField + "::DATE)) t2 " + + " ON t1." + timeField + "::DATE = t2.max_date " + + " WHERE " +conditionBuilder.toString()+ " AND t1."+timeField+"::DATE BETWEEN '"+startDate+"' AND '"+endDate+"'"; } else if ("SQLSERVER".equalsIgnoreCase(DBname)) { querySql = "SELECT t1.* FROM " + tableName + " t1 " + - "JOIN (SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0) AS month_start, " + - "MAX(CONVERT(DATE, " + timeField + ")) AS max_date " + - "FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " JOIN (SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0) AS month_start, " + + " MAX(CONVERT(DATE, " + timeField + ")) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + " AND CONVERT(DATE, " + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "') " + - "GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0)) t2 " + - "ON CONVERT(DATE, t1." + timeField + ") = t2.max_date " + - "WHERE " + conditionBuilder.toString() + + " GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, CONVERT(DATE, " + timeField + ")), 0)) t2 " + + " ON CONVERT(DATE, t1." + timeField + ") = t2.max_date " + + " WHERE " + conditionBuilder.toString() + " AND CONVERT(DATE, t1." + timeField + ") BETWEEN CONVERT(DATE, '" + startDate + "') AND CONVERT(DATE, '" + endDate + "')"; } else { // 默认处理(如MySQL) querySql = "SELECT t1.* FROM " + tableName + " t1 " + - "JOIN (SELECT DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01') AS month_start, " + - "MAX(STR_TO_DATE(" + timeField + ", '%Y-%m-%d')) AS max_date " + - "FROM " + tableName + " WHERE " + conditionBuilder.toString() + + " JOIN (SELECT DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01') AS month_start, " + + " MAX(STR_TO_DATE(" + timeField + ", '%Y-%m-%d')) AS max_date " + + " FROM " + tableName + " WHERE " + conditionBuilder.toString() + " AND STR_TO_DATE(" + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d') " + - "GROUP BY DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01')) t2 " + - "ON STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') = t2.max_date " + - "WHERE " + conditionBuilder.toString() + + " GROUP BY DATE_FORMAT(STR_TO_DATE(" + timeField + ", '%Y-%m-%d'), '%Y-%m-01')) t2 " + + " ON STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') = t2.max_date " + + " WHERE " + conditionBuilder.toString() + " AND STR_TO_DATE(t1." + timeField + ", '%Y-%m-%d') BETWEEN STR_TO_DATE('" + startDate + "', '%Y-%m-%d') AND STR_TO_DATE('" + endDate + "', '%Y-%m-%d')"; } LOGGER.info("执行查询: {}", querySql);