Oracle怎样确定一年是否是闰年?
若要判断一年是否为闰年,可以看二月底是否为29号。
with v1 as
(select date '2023-03-12' as d from dual)
select trunc(d,'yyyy') as year_begin,
add_months(trunc(d,'yyyy'),1) as feb_begin,
last_day(add_months(trunc(d,'yyyy'),1)) as feb_end,
to_char(last_day(add_months(trunc(d,'yyyy'),1)),'dd') as feb_end_day
from v1;
YEAR_BEGIN FEB_BEGIN FEB_END FEB_END_DAY
-------------- ------------ ----------- ----------------
2023-01-01 2023-02-01 2023-02-28 28
结果:2023年不是闰年。
评论
有用 7
create or replace function f_leap_year( ls_year varchar2)
return varchar2 is
ls_rtn varchar2(1);
begin
select decode(to_char(to_date(ls_year||'-03-01','yyyy-mm-dd')-1,'dd'),'28','N','Y') into ls_rtn from dual;
return ls_rtn;
end;
/
SQL> select f_leap_year('2022') from dual;
F_LEAP_YEAR('2022')
--------------------------------------------------------------------------------------------------------------------------------------
N
SQL> select f_leap_year('2024') from dual;
F_LEAP_YEAR('2024')
--------------------------------------------------------------------------------------------------------------------------------------
Y
评论
有用 1select decode(mod(to_number(to_char(sysdate,'yyyy')),4),0,'Y','N') from dual
评论
有用 1年份能被4整除就是闰年?好像是正确的。但我以前看过一篇文章,说是可能每千百年来会有一次特例,因为每4年有一个2月29日并不能完全将地球绕太阳公转的时间与日历完全吻合,总是多一点。所以每千百年会有一个可以被4整除的年份也是平年。
评论
有用 0
墨值悬赏

