From 69b6ae65f297a7e008d96202dd12bab74dc8d91e Mon Sep 17 00:00:00 2001 From: "kelvin.yau" Date: Thu, 22 Oct 2026 11:43:58 +0800 Subject: [PATCH] handling date/time overflow --- scripts/anonymize_demo_copy.sql | 7 ++++++- scripts/refresh_demo_dates.sql | 19 ++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/scripts/anonymize_demo_copy.sql b/scripts/anonymize_demo_copy.sql index 79aca240..5e179424 100644 --- a/scripts/anonymize_demo_copy.sql +++ b/scripts/anonymize_demo_copy.sql @@ -416,8 +416,13 @@ BEGIN WHERE deleted = 0 AND estimatedArrivalDate IS NOT NULL; IF expiry_delta IS NOT NULL AND expiry_delta > 0 THEN + -- Clamp at DATE max so sentinel 9999-12-31 lots do not Error 1441. UPDATE inventory_lot - SET expiryDate = DATE_ADD(expiryDate, INTERVAL expiry_delta DAY) + SET expiryDate = IF( + expiryDate > DATE_SUB('9999-12-31', INTERVAL expiry_delta DAY), + '9999-12-31', + DATE_ADD(expiryDate, INTERVAL expiry_delta DAY) + ) WHERE expiryDate IS NOT NULL; END IF; diff --git a/scripts/refresh_demo_dates.sql b/scripts/refresh_demo_dates.sql index bc2afbcb..acc78d6c 100644 --- a/scripts/refresh_demo_dates.sql +++ b/scripts/refresh_demo_dates.sql @@ -52,20 +52,33 @@ SET @day_delta = IF( START TRANSACTION; +-- Clamp at MySQL DATE/DATETIME max so sentinel 9999-12-31 lots do not Error 1441. UPDATE inventory_lot -SET expiryDate = DATE_ADD(expiryDate, INTERVAL @day_delta DAY) +SET expiryDate = IF( + expiryDate > DATE_SUB('9999-12-31', INTERVAL @day_delta DAY), + '9999-12-31', + DATE_ADD(expiryDate, INTERVAL @day_delta DAY) +) WHERE @refresh_guard = 'ok' AND @day_delta > 0 AND expiryDate IS NOT NULL; UPDATE delivery_order -SET estimatedArrivalDate = DATE_ADD(estimatedArrivalDate, INTERVAL @day_delta DAY) +SET estimatedArrivalDate = IF( + estimatedArrivalDate > DATE_SUB('9999-12-31 23:59:59', INTERVAL @day_delta DAY), + '9999-12-31 23:59:59', + DATE_ADD(estimatedArrivalDate, INTERVAL @day_delta DAY) +) WHERE @refresh_guard = 'ok' AND @day_delta > 0 AND estimatedArrivalDate IS NOT NULL; UPDATE purchase_order -SET estimatedArrivalDate = DATE_ADD(estimatedArrivalDate, INTERVAL @day_delta DAY) +SET estimatedArrivalDate = IF( + estimatedArrivalDate > DATE_SUB('9999-12-31 23:59:59', INTERVAL @day_delta DAY), + '9999-12-31 23:59:59', + DATE_ADD(estimatedArrivalDate, INTERVAL @day_delta DAY) +) WHERE @refresh_guard = 'ok' AND @day_delta > 0 AND estimatedArrivalDate IS NOT NULL;