You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL技术需求:若上月最后一日有值,将下月起始日期设为该日

SQL实现:上月末有数据时回滚下月起始日期

核心逻辑

  • 确定目标月份的上月最后一日
  • 检查该日期是否存在有效数据
  • 若存在,将下月起始日期替换为上月最后一日;否则保留原起始日期

MySQL 实现示例

-- 定义目标月份(即需要调整起始日期的下月)
SET @target_month = '2024-06-01';
-- 计算上月最后一日
SET @last_day_prev_month = LAST_DAY(DATE_SUB(@target_month, INTERVAL 1 MONTH));

-- 判断上月最后一日是否存在有效数据
SET @has_data = EXISTS(
    SELECT 1 FROM data_table 
    WHERE record_date = @last_day_prev_month 
    AND value IS NOT NULL -- 可根据业务需求调整数据有效性判断条件
);

-- 生成调整后的起始日期
SET @adjusted_start_date = CASE 
    WHEN @has_data THEN @last_day_prev_month 
    ELSE @target_month 
END;

-- 查看结果
SELECT @adjusted_start_date AS adjusted_start_date;

SQL Server 实现示例

DECLARE @target_month DATE = '2024-06-01';
DECLARE @last_day_prev_month DATE = EOMONTH(DATEADD(MONTH, -1, @target_month));
DECLARE @has_data BIT;

-- 检查上月最后一日的数据存在性
SELECT @has_data = CASE 
    WHEN EXISTS(
        SELECT 1 FROM data_table 
        WHERE record_date = @last_day_prev_month 
        AND value IS NOT NULL
    ) THEN 1 ELSE 0 
END;

-- 计算调整后的起始日期
DECLARE @adjusted_start_date DATE = CASE 
    WHEN @has_data = 1 THEN @last_day_prev_month 
    ELSE @target_month 
END;

SELECT @adjusted_start_date AS adjusted_start_date;

PostgreSQL 实现示例

WITH params AS (
    -- 定义目标月份及上月最后一日
    SELECT '2024-06-01'::DATE AS target_month,
           (DATE_TRUNC('MONTH', '2024-06-01'::DATE) - INTERVAL '1 DAY')::DATE AS last_day_prev_month
),
data_validation AS (
    -- 验证上月最后一日是否有有效数据
    SELECT EXISTS(
        SELECT 1 FROM data_table 
        WHERE record_date = (SELECT last_day_prev_month FROM params)
        AND value IS NOT NULL
    ) AS has_data
)
-- 输出调整后的起始日期
SELECT CASE 
    WHEN (SELECT has_data FROM data_validation) THEN (SELECT last_day_prev_month FROM params)
    ELSE (SELECT target_month FROM params)
END AS adjusted_start_date;

注意事项

  • 请替换data_table、record_date、value为实际业务中的表名和字段名
  • value IS NOT NULL可根据需求修改,比如判断值大于0、不为空字符串等具体规则
  • 若需批量处理多个月份,可将逻辑整合到循环或范围查询中,遍历目标月份列表

内容的提问来源于stack exchange,提问作者Darren Ehsan sabzikari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:30:51