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

基于财年动态获取数据的MySQL查询语句求解

解决MySQL财年动态筛选数据的问题

你的原查询只通过年份范围筛选,没考虑财年的月份边界(4月到次年3月),所以会包含不符合要求的月份数据。下面是针对两种场景的正确查询语句:

动态获取当前财年的数据

如果需要根据当前日期自动匹配对应的财年(比如现在是2024年5月,就匹配2024年4月-2025年3月),可以用这个查询:

SELECT * 
FROM rup_calendar 
WHERE 
    (YEAR = YEAR(CURDATE()) AND MONTH >= 4) 
    OR 
    (YEAR = YEAR(CURDATE()) + 1 AND MONTH <= 3);

逻辑说明

  • 第一个条件(YEAR = YEAR(CURDATE()) AND MONTH >= 4):匹配当前年份中4月及以后的所有记录
  • 第二个条件(YEAR = YEAR(CURDATE()) + 1 AND MONTH <= 3):匹配下一年中1-3月的所有记录
    两者结合正好覆盖了完整的财年周期。

指定特定财年的数据

如果要固定筛选2018-19财年(2018年4月至2019年3月),可以直接指定年份和月份范围:

SELECT * 
FROM rup_calendar 
WHERE 
    (YEAR = 2018 AND MONTH >= 4) 
    OR 
    (YEAR = 2019 AND MONTH <= 3);

这个查询会精准筛选出你期望的结果集(ROWNO 6到17的记录)。

原查询的问题所在

原语句SELECT * FROM rup_calendar WHERE YEAR BETWEEN YEAR(CURDATE()) AND YEAR(CURDATE())+1;的问题在于,它会包含当前年份的所有月份(比如2018年1-3月)和下一年的所有月份(比如2019年4-12月),这显然不符合财年的时间范围要求,所以无法得到正确结果。

内容的提问来源于stack exchange,提问作者Anil Kumar Reddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:57:13