From fe525999849840bda82edd7acb5280acf3e0d4bb Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Thu, 14 May 2026 13:59:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8F=96=E6=97=B6=E5=8C=BA=E5=B8=B8?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dashboard/aws/lambda/Constants.java | 7 +++++-- .../lambda/handler/MySQLBatchToS3Handler.java | 2 +- .../aws/lambda/service/MySQLService.java | 17 ++++++++++------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/dashboard/aws/lambda/Constants.java b/src/main/java/com/dashboard/aws/lambda/Constants.java index 510a3b6..686494d 100644 --- a/src/main/java/com/dashboard/aws/lambda/Constants.java +++ b/src/main/java/com/dashboard/aws/lambda/Constants.java @@ -1,10 +1,13 @@ package com.dashboard.aws.lambda; +import java.time.ZoneId; import java.util.List; public class Constants { - public static final List tables = List.of("dashboard_record_accumulate", "dashboard_record_measure"); -// public static final List tables = List.of("dashboard_record_accumulate_test", "dashboard_record_measure_test"); + public static final ZoneId TOKYO_ZONE = ZoneId.of("Asia/Tokyo"); + +// public static final List tables = List.of("dashboard_record_accumulate", "dashboard_record_measure"); + public static final List tables = List.of("dashboard_record_accumulate_test", "dashboard_record_measure_test"); } diff --git a/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java b/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java index 285b372..ae6e979 100644 --- a/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java +++ b/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java @@ -27,7 +27,7 @@ public class MySQLBatchToS3Handler implements RequestHandler private static final String DB_SCHEMA = System.getenv("DB_SCHEMA"); private static final int BATCH_SIZE = Integer.parseInt(System.getenv("BATCH_SIZE")); private static final String CUTOFF_DATE_STR = System.getenv("CUTOFF_DATE"); - private static final ZoneId TOKYO_ZONE = ZoneId.of("Asia/Tokyo"); + private static final ZoneId TOKYO_ZONE = Constants.TOKYO_ZONE; private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final Pattern FILE_PATTERN = Pattern.compile(".*/(\\d{3})\\.csv$"); diff --git a/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java b/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java index f77109c..b4caf84 100644 --- a/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java +++ b/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java @@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory; import java.sql.*; import java.time.LocalDate; +import java.time.ZoneId; import java.util.*; public class MySQLService { @@ -104,23 +105,25 @@ public class MySQLService { } public int deleteBeforeDate(String schema, String table, LocalDate fileDate) { - // 计算比较值: yyyyMMdd 格式的整数(例如 20251008) - int cutoff = fileDate.getYear() * 10000 + fileDate.getMonthValue() * 100 + fileDate.getDayOfMonth(); + // 转换为东京时区当天 00:00:00 的毫秒级时间戳 + long cutoffUploadAt = fileDate.atStartOfDay(ZoneId.of("Asia/Tokyo")) + .toInstant() + .toEpochMilli(); String sql = String.format( - "DELETE FROM %s.%s WHERE (COALESCE(date_year,0) * 10000 + COALESCE(date_month,0) * 100 + COALESCE(date_day,0)) < ?", + "DELETE FROM %s.%s WHERE upload_at < ?", schema, table ); - logger.info("deleteBeforeDate sql: {}, cutoff:{}", sql, cutoff); + logger.info("deleteBeforeDate sql: {}, cutoffUploadAt:{}", sql, cutoffUploadAt); try (Connection conn = DriverManager.getConnection(MYSQL_URL, DB_USER, DB_PASSWORD); PreparedStatement ps = conn.prepareStatement(sql)) { - ps.setInt(1, cutoff); + ps.setLong(1, cutoffUploadAt); int deleted = ps.executeUpdate(); - logger.info("deleteBeforeDate: schema={}, table={}, cutoff={}, deleted={}", schema, table, cutoff, deleted); + logger.info("deleteBeforeDate: schema={}, table={}, cutoffUploadAt={}, deleted={}", schema, table, cutoffUploadAt, deleted); return deleted; } catch (SQLException e) { - logger.error("deleteBeforeDate failed for {}/{} cutoff={}", schema, table, cutoff, e); + logger.error("deleteBeforeDate failed for {}/{} cutoffUploadAt={}", schema, table, cutoffUploadAt, e); return 0; } }