查询每个月25号到下个月26号数据



```xml
 <select id="getI10V3List" resultMap="BaseResultMap" resultType="list">
        SELECT sm.stove_volume, sm.issue_num, MAX(tpfr.create_time) AS max_time ,tpfr.stove_num, tpfr.stove_code, AVG(tpfr.temp_3) as davg3 FROM temp_press_feed_rate tpfr LEFT JOIN stove_manage sm ON tpfr.stove_num = sm.stove_num WHERE  stove_code IS NOT NULL AND  sm.stove_volume=10 AND sm.issue_num='一期' AND tpfr.create_time <![CDATA[ >= ]]> DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 1 MONTH) + INTERVAL 1 DAY - INTERVAL 1 MONTH, '%Y-%m-26')
        AND tpfr.create_time <![CDATA[ <= ]]>  DATE_FORMAT(LAST_DAY(CURRENT_DATE), '%Y-%m-25') GROUP BY tpfr.stove_num, tpfr.stove_code ,sm.stove_volume, sm.issue_num ORDER BY tpfr.stove_num
    </select>

请教:周期以上月26号到本月25号为月度计量,以上可查询出来上个周期的数据,但如何获取每一个周期数据。比如3个月前数据,一年零3个月的数据。

该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

要获取每个周期(如3个月前或一年零3个月前)的数据,你可以使用日期函数和相对日期的计算来实现。


以下是一个示例,演示如何获取3个月前的数据:

SELECT sm.stove_volume, sm.issue_num, MAX(tpfr.create_time) AS max_time ,tpfr.stove_num, tpfr.stove_code, AVG(tpfr.temp_3) AS davg3
FROM temp_press_feed_rate tpfr
LEFT JOIN stove_manage sm ON tpfr.stove_num = sm.stove_num
WHERE  stove_code IS NOT NULL
  AND sm.stove_volume = 10
  AND sm.issue_num = '一期'
  AND tpfr.create_time >= DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 3 MONTH), '%Y-%m-26')
  AND tpfr.create_time <= DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 2 MONTH), '%Y-%m-25')
GROUP BY tpfr.stove_num, tpfr.stove_code, sm.stove_volume, sm.issue_num
ORDER BY tpfr.stove_num

在上述代码中,使用DATE_SUB()函数和INTERVAL关键字来计算日期的相对值。DATE_SUB(CURRENT_DATE, INTERVAL 3 MONTH)表示当前日期减去3个月,DATE_SUB(CURRENT_DATE, INTERVAL 2 MONTH)表示当前日期减去2个月。然后,使用DATE_FORMAT()函数将日期格式化为所需的形式(月度计量的开始日期和结束日期)。根据这些条件,查询可以获取3个月前的数据。


类似地,你可以根据需要,使用DATE_SUB()函数和INTERVAL关键字来计算其他周期的数据。例如,如果要获取一年零3个月前的数据,可以将INTERVAL的值设置为1 YEAR + 3 MONTH。根据你的具体需求,进行相应的日期计算即可。

以下回答部分参考了GPT,你看是否可以帮你解决问题:
根据您提供的 SQL 查询语句,您正在查找某个特定周期内的数据。要获取不同周期的数据,您可以使用日期函数和条件来调整查询语句。

以下是一些示例:

  1. 获取3个月前的数据:

    SELECT sm.stove_volume, sm.issue_num, MAX(tpfr.create_time) AS max_time, tpfr.stove_num, tpfr.stove_code, AVG(tpfr.temp_3) AS davg3
    FROM temp_press_feed_rate tpfr
    LEFT JOIN stove_manage sm ON tpfr.stove_num = sm.stove_num
    WHERE stove_code IS NOT NULL
    AND sm.stove_volume = 10
    AND sm.issue_num = '一期'
    AND tpfr.create_time >= DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 4 MONTH) + INTERVAL 1 DAY - INTERVAL 4 MONTH, '%Y-%m-26') -- 注意这里是4个月前
    AND tpfr.create_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 3 MONTH), '%Y-%m-25') -- 注意这里是3个月前的最后一天
    GROUP BY tpfr.stove_num, tpfr.stove_code, sm.stove_volume, sm.issue_num
    ORDER BY tpfr.stove_num
    
  2. 获取一年零3个月前的数据:

    SELECT sm.stove_volume, sm.issue_num, MAX(tpfr.create_time) AS max_time, tpfr.stove_num, tpfr.stove_code, AVG(tpfr.temp_3) AS davg3
    FROM temp_press_feed_rate tpfr
    LEFT JOIN stove_manage sm ON tpfr.stove_num = sm.stove_num
    WHERE stove_code IS NOT NULL
    AND sm.stove_volume = 10
    AND sm.issue_num = '一期'
    AND tpfr.create_time >= DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 15 MONTH) + INTERVAL 1 DAY - INTERVAL 15 MONTH, '%Y-%m-26') -- 注意这里是15个月前
    AND tpfr.create_time <= DATE_FORMAT(LAST_DAY(CURRENT_DATE - INTERVAL 12 MONTH), '%Y-%m-25') -- 注意这里是12个月前的最后一天
    GROUP BY tpfr.stove_num, tpfr.stove_code, sm.stove_volume, sm.issue_num
    ORDER BY tpfr.stove_num
    

请根据您的需求进行适当的调整。注意,在修改查询语句之前,请备份您的数据或进行测试,以确保查询结果正确无误。