1、sql字段值修改
This commit is contained in:
parent
07ff4f27f8
commit
d3e0d7fb49
Binary file not shown.
Binary file not shown.
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user