天天看點

mysql 閏年_Oracle 閏年判斷

//閏年最直接的判斷是:能被4整除且不能被100整除,或者能被400整除的年份 create or replace procedure pro_leap_year(year_in

//閏年最直接的判斷是:能被4整除且不能被100整除,或者能被400整除的年份

create or replace procedure pro_leap_year(year_in in number)

as

v_mod1 number(4) :=mod(year_in,4);

v_mod2 number(4) :=mod(year_in,100);

v_mod3 number(4) :=mod(year_in,400);

begin

if ((v_mod1=0 and v_mod2<>0) or v_mod3=0) then

dbms_output.put_line(year_in||' is a leap year');

else dbms_output.put_line(year_in||' is not a leap year');

end if;

exception

when others then

dbms_output.put_line(sqlerrm);

end pro_leap_year;

/

SQL> exec pro_leap_year(2010);

2010 is not a leap year

PL/SQL procedure successfully completed

//

SQL> exec pro_leap_year(2000);

2000 is a leap year

PL/SQL procedure successfully completed

//

//關于閏年平年,下面有一個比較全面的解釋:

//在公曆(格裡曆)紀年中,,有閏日的年份叫閏年,一般年份365天,閏年為366天。

//由于地球繞太陽運作周期為365天5小時48分46秒(合365.24219天)即一回歸年,公曆把一年定為365天。

//所餘下的時間約為四年累計一天,加在二月裡,是以平常年份每年365天,二月為28天,閏年為366天,二月為29天。

//是以,每400年中有97個閏年,閏年在2月末增加一天,閏年366天。

//閏年的計算方法:公元紀年的年數可以被四整除,即為閏年;

//被100整除而不能被400整除為平年;被100整除也可被400整除的為閏年。

//如2000年是閏年,而1900年不是。

//

//我們所關心的是怎麼樣計算指定的一個年份是否是閏年:

//從上面的描述中,我們知道:

//如果一年中2月份有29天,那麼這一年就是閏年,否則是平年

SQL> drop procedure pro_leap_year;

Procedure dropped

//

create or replace procedure pro_leap_year(year_in in number)

as

v_year_in varchar2(10) :=to_char(year_in)||'0229';

v_date date;

begin

//這裡将拼接的字元串轉換為日期,并指派給一個日期類型的變量,

//其實就是為了和日期類型進行比較,隐式的比較,比較你輸入的年份中2月是否含有29日這一天

v_date :=to_date(v_year_in,'yyyy-mm-dd');

dbms_output.put_line(year_in||' is a leap year');

exception

when others then

dbms_output.put_line(year_in||' is not a leap year');

end pro_leap_year;

/

SQL> exec pro_leap_year(2010);

2010 is not a leap year

PL/SQL procedure successfully completed

//

SQL> exec pro_leap_year(2000);

2000 is a leap year

PL/SQL procedure successfully completed

//

SQL> exec pro_leap_year(2005);

2005 is not a leap year

PL/SQL procedure successfully completed

//

SQL> exec pro_leap_year(2100);

2100 is not a leap year

PL/SQL procedure successfully completed

//

//我們也可以用一條select語句來判斷:

SQL> select case

2 when to_char(last_day(to_date(&year||'02','yyyymm')),'dd')='29'

3 then 'the year you input is a leap year'

4 else 'the year you input is not a leap year'

5 end is_leap_year

6 from dual;

Enter value for year: 2050

old 2: when to_char(last_day(to_date(&year||'02','yyyymm')),'dd')='29'

new 2: when to_char(last_day(to_date(2050||'02','yyyymm')),'dd')='29'

IS_LEAP_YEAR

-------------------------------------

the year you input is not a leap year

//

SQL> /

Enter value for year: 2000

old 2: when to_char(last_day(to_date(&year||'02','yyyymm')),'dd')='29'

new 2: when to_char(last_day(to_date(2000||'02','yyyymm')),'dd')='29'

IS_LEAP_YEAR

---------------------------------

the year you input is a leap year

//

SQL> /

Enter value for year: 2012

old 2: when to_char(last_day(to_date(&year||'02','yyyymm')),'dd')='29'

new 2: when to_char(last_day(to_date(2012||'02','yyyymm')),'dd')='29'

IS_LEAP_YEAR

---------------------------------

the year you input is a leap year

//

SQL> /

Enter value for year: 1998

old 2: when to_char(last_day(to_date(&year||'02','yyyymm')),'dd')='29'

new 2: when to_char(last_day(to_date(1998||'02','yyyymm')),'dd')='29'

IS_LEAP_YEAR

-------------------------------------

the year you input is not a leap year

//

mysql 閏年_Oracle 閏年判斷
mysql 閏年_Oracle 閏年判斷

本文原創釋出php中文網,轉載請注明出處,感謝您的尊重!