`
sangei
  • 浏览: 337246 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

pl/sql 判断闰年

阅读更多

这是一个老调重弹的例子,也许以前写过这样的笔记,这里再贴出来,是再次感叹于其解决方法的美妙行。
判断一个年份是闰年,常见的想法是判断其是否可被4整除,如果是100的倍数,要求其能被400整除。
下面是摘自DBA_Village的例子:
create or replace function IS_LEAP_YEAR (nYear in number) return boolean
is
V_REMAINDER1 NUMBER(5,2);
V_REMAINDER2 NUMBER(5,2);
V_REMAINDER3 NUMBER(5,2);
BEGIN
V_REMAINDER1 := MOD(nYear,4);
V_REMAINDER2 := MOD(nYear,100);
V_REMAINDER3 := MOD(nYear,400);

IF ((V_REMAINDER1 = 0 AND V_REMAINDER2 <> 0 ) OR V_REMAINDER3 = 0) THEN
DBMS_OUTPUT.PUT_LINE(nYear || ' is a leap year');
return true;
ELSE
DBMS_OUTPUT.PUT_LINE (nYear || ' is not a leap year');
return false;
END IF;
END;

实际上,我们判断一个年份是否是闰年,主要是2月29号这个日期,如果反过来,如果该年存在这么一天,那么不就是闰年了? ,例子:
SQL> Create Or Replace Function Is_Leap_Year(nYear number) return number
   2   is
   3  
   4   v_test_date Varchar2(8) ;
   5   v_date   date ;
   6   begin
   7    v_test_date := to_char(nYear)||'0229';
   8   
   9    begin
10     v_date := to_date(v_test_date, 'yyyymmdd') ;
11     return 1 ;
12    Exception
13     when others then
14      return 0 ;
15    End ;
16   End ;
17   /    

Function created.

SQL>
SQL> show error
No errors.
SQL>  
SQL> select Is_Leap_Year(2000)   from dual ;

IS_LEAP_YEAR(2000)
------------------
                  1

SQL> select Is_Leap_Year(2001)   from dual ;

IS_LEAP_YEAR(2001)
------------------
                  0

SQL> select Is_Leap_Year(1900)   from dual ;

IS_LEAP_YEAR(1900)
------------------
                  0
当然,这个方法不是我原创的,但其抓住问题的本质的解决方法的确令人佩服,所以解决任何问题之前,必须首先了解问题的真正含义,不要为解决问题而解决问题。

分享到:
评论

相关推荐

    只能在PL/SQL中访问联合数组。

    在Oracle数据库的PL/SQL环境中,联合数组(Varying Array)是一种特殊的变量类型,它允许程序员存储一组相同类型的元素,这些元素可以是数值、字符串或其他复杂的数据类型。联合数组在PL/SQL中扮演着重要角色,特别...

    判断闰年 c#

    在编程领域,闰年的判断是基础的算法问题之一,尤其在学习C#语言时经常会遇到。闰年的定义是:能被4整除但不能被100整除,或者能被400整除的年份。这个规则适用于公元1582年之后的格里高利历。下面我们将深入探讨...

    sql判断某年份是否为闰年

    ### SQL 判断某年份是否为闰年的方法 在数据库操作中,经常需要处理与日期相关的数据,其中就包括了判断某一年是否为闰年。本文将详细介绍如何使用SQL来实现这一功能,并深入探讨其中涉及的技术细节。 #### 一、...

    sql判断某年份是否为闰年方法2

    ### SQL判断某年份是否为闰年方法解析 #### 方法2:存储过程或函数实现 在给定的部分内容中,可以看到一个用于判断某一年份是否为闰年的SQL函数`fn_LeapYear`的定义。此函数接受一个整数参数`@year`,表示待判断的...

    汇编语言判断闰年程序

    汇编判断闰年 汇编判断闰年 汇编判断闰年 汇编判断年 汇编判断闰年

    判断闰年程序—c语言

    本文将深入探讨“判断闰年程序—C语言”这一主题,旨在为C语言初学者提供一个清晰、详尽的学习指南,帮助他们理解和掌握如何用C语言编写判断闰年的程序。 ### C语言简介 C语言是一种结构化编程语言,由Dennis ...

    判断闰年非闰年dw源代码.asp

    初学者适用 , 判断闰年非闰年

    汇编案例判断闰年程序

    汇编案例判断闰年程序

    汇编程序判断闰年程序

    汇编程序判断闰年程序汇编程序判断闰年程序

    判断闰年的HTML

    这是一个用HTML制作的一个判断闰年的小网页,只做参考!

    判断闰年和星期几的小代码,很简洁

    ### 判断闰年的方法 #### 1. 闰年的定义 闰年是指公历中为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的特殊年份。通常情况下,每四年设一个闰年,即在二月份增加一天,使该月变为29天。 ...

    编译原理 判断闰年程序

    判断闰年的程序是基于特定的数学规则来确定一个年份是否为闰年。根据公历规定,闰年有以下条件: 1. 能被4整除但不能被100整除的年份。 2. 能被400整除的年份。 这个程序的工作流程可能如下: 1. **用户输入**:...

    汇编程序设计判断闰年程序论文流程图加源码

    本文将详细解析“汇编程序设计判断闰年程序”的核心知识点,包括闰年的定义、汇编语言基础、程序设计流程以及源代码分析。 首先,我们要理解什么是闰年。闰年是为了弥补因地球绕太阳公转周期与格里高利历(公历)...

    C例子:判断闰年

    该程序是我写的博客“一起talk C栗子吧(第一回:C语言实例--判断闰年)”的配套程序,共享给大家使用。

    VB 编译的exe程序 闰年/平年判断

    本exe程序时用vb6.0编译的,输入年份可以自动判断是闰年还是平年!

    VB判断闰年典型实例

    在这个“VB判断闰年典型实例”中,我们将探讨如何使用VB编写一个程序,自动判断输入的年份是否为闰年。 首先,我们需要了解闰年的定义。根据格里高利历(公历),闰年有以下规则: 1. 如果年份可以被4整除但不能被...

    汇编语言实现判断闰年 源码

    本主题聚焦于使用x8086汇编语言实现一个判断闰年的程序。x8086是Intel公司开发的第一款16位微处理器,广泛应用于早期个人计算机系统,至今仍对嵌入式系统有所影响。掌握x8086汇编语言对于理解计算机底层工作原理至关...

    c语言判断闰年

    判断闰年

    c语言判断闰年.docx

    本篇文章将详细探讨如何在C语言中判断一个年份是否为闰年。 首先,我们需要了解闰年的规则。根据格里高利历(公历),一个年份是闰年当满足以下条件之一: 1. 能够被4整除,但不能被100整除。 2. 能够被400整除。 ...

Global site tag (gtag.js) - Google Analytics