获取干支纪年的函数

干支纪年可通过年份计算得来(东汉以后)

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 乙巳  

标签: GBase, 天干地支, 干支, 纪年法

添加新评论