干支纪年可通过年份计算得来（东汉以后）drop function if exists getY2TGDZ(int); create function getY2TGDZ(p_year int) returns varchar(20) with (not variant); define v_tg int; define v_dz int; -- 天干：mod(年份,10），前移3 let v_tg = mod(p_year,10)+7; if v_tg > 10 then let v_tg = v_tg - 10; end if; -- 地支：mod(年份,12)，前移3 let v_dz = mod(p_year,12)+9; if v_dz > 12 then let v_dz = v_dz - 12; end if; return substr('甲乙丙丁戊己庚辛壬癸',v_tg,1) || substr('子丑寅卯辰巳午未申酉戌亥',v_dz,1); end function;示例：select getY2TGDZ(2025) as tz from dual;结果：tz 乙巳