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

如何在MySQL中编写自定义函数获取指定日期对应财年(上年7月-本年6月)

MySQL 自定义财年计算函数实现方案

你提供的原始函数是SQL Server语法,以下是适配MySQL的可运行版本,财年规则完全匹配你的需求:上年7月1日至本年6月30日为一个财年。

1. 创建函数代码

MySQL默认以分号作为语句结束符,创建函数前需要先修改分隔符避免冲突:

DELIMITER //

CREATE FUNCTION GetFIYear(input_date DATE) 
RETURNS VARCHAR(10)
DETERMINISTIC
BEGIN
    DECLARE fi_year VARCHAR(10);
    IF MONTH(input_date) < 7 THEN
        -- 1-6月归属上一年开始的财年,例如2024年3月属于2023-24财年
        SET fi_year = CONCAT(YEAR(input_date) - 1, '-', RIGHT(YEAR(input_date), 2));
    ELSE
        -- 7-12月归属本年开始的财年,例如2024年8月属于2024-25财年
        SET fi_year = CONCAT(YEAR(input_date), '-', RIGHT(YEAR(input_date) + 1, 2));
    END IF;
    RETURN fi_year;
END //

DELIMITER ;

说明:入参设置为DATE类型比VARCHAR兼容性更好,若你需要传入字符串格式日期,可将参数类型修改为VARCHAR(50),函数内部用STR_TO_DATE(input_date, '%Y-%m-%d')转换即可。

2. 函数调用方式

和你预期的调用逻辑一致,直接在SELECT语句中传入日期参数即可:

-- 传入固定日期测试
SELECT GetFIYear('2024-03-15'); -- 返回 2023-24
SELECT GetFIYear('2024-08-20'); -- 返回 2024-25

-- 结合表查询
SELECT Title, GetFIYear(你的日期字段名) AS financial_year
FROM 你的表名;

内容的提问来源于stack exchange,提问作者Umar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:07