`
werr1985
  • 浏览: 67537 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

oracle相关日期处理函数

阅读更多

今天写了一个关于比较麻烦的日期判断的函数,先贴上放这里存着,主要是根据日期判断领料是否超支的

相关需求
一.领料金额标准是从6.26-7.25.(7月)  7.26-8.25算为8月.除12,1月.12月为11.26-12.31.
1月为1.1-1.25。
二.7月份填的金额标准只对6.26-7.25.(7月)当月有用,到26日了,金额标准控制自动取消.
只有填了8月的金额标准,才对8月有控制,以此类推.

 

-判断领料是否超支
Function f_if_llcz(p_rq varchar2, p_bmmc varchar2, p_xmbm varchar2) return number
is
	v_rq date;
    v_begin date;--统计开始时间
  v_end date;      --统计结束时间
  v_rqts Number; --  当前日期天数
  v_month Number;--    当前月份
  v_year Number;--     当前年
	v_bzje WZ_LLJE.BZJE%type;
	v_sjje WZ_LLJE.SJJE%type;
	v_cnt number;
	v_flag number;
begin
--	v_rq := trunc(to_date(p_rq, 'yyyy-mm-dd'), 'mm');
  
  --处理传进来的日期
   v_rqts := to_number(substr(p_rq,instr(p_rq,'-',-1)+1)) ; 
  v_month := to_number(substr(p_rq,instr(p_rq,'-',1)+1,2)) ;
  v_year := to_number(substr(p_rq,1,4));
  
    If 1<v_month  and v_month< 12  then
       if v_rqts<=25 then --如果日期小于25日 统计区间就是上个月25日到当天
          v_begin := to_date(to_char(v_year)||'-'||to_char(v_month-1)||'-'||'26','yyyy-mm-dd'); 
            v_end :=to_date(p_rq,'yyyy-mm-dd');
           v_rq:=to_date(to_char(v_year)||'-'||to_char(v_month),'yyyy-mm'); 
          end if;
          if v_rqts>26 then --如果日期大于25日 统计区间就是从当月26日到当天
          v_begin := to_date(to_char(v_year)||'-'||to_char(v_month)||'-'||'26','yyyy-mm-dd'); 
           v_end :=to_date(p_rq,'yyyy-mm-dd');
           v_rq:=to_date(to_char(v_year)||'-'||to_char(v_month+1),'yyyy-mm'); 
          end if;
   --如果是1月份 查询起止时间就是本月1日到当天
  Elsif v_month = 1 then
      v_begin := to_date(to_char(v_year)||'-'||to_char(v_month)||'-'||'1','yyyy-mm-dd');
       v_end :=to_date(p_rq,'yyyy-mm-dd');  
      v_rq:=to_date(to_char(v_year)||'-'||to_char(v_month),'yyyy-mm'); 
      
       --如果是12月份 查询起止时间就是上月26日到当天
  Elsif  v_month = 12 then
       v_begin := to_date(to_char(v_year)||'-'||to_char(v_month-1)||'-'||'26','yyyy-mm-dd');
        v_end :=to_date(p_rq,'yyyy-mm-dd'); 
       v_rq:=to_date(to_char(v_year)||'-'||to_char(v_month),'yyyy-mm'); 
      end if;  
  
	select sum(spje) into v_sjje from wz_lljhxb a, wz_lljhpb b 
	where a.bh = b.bh and sqrq  >=v_begin and  sqrq<=v_end  and b.bmmc = p_bmmc 
	and b.xmbm = p_xmbm and b.bill_state='1'  group by b.bmmc;
	select count(*) into v_cnt from wz_llje 
	where to_date(year || '-' || month, 'yyyy-mm') = v_rq and bmmc = p_bmmc;
	if v_cnt = 0 then --该月没有定标准
		v_sjje := 0; --让实际金额等于零,于是总不会超支
	else
		select bzje into v_bzje from wz_lljexb 
		where pbbh = to_char(v_rq, 'yyyymm') || p_bmmc and xmbm = p_xmbm;
	end if;

  if(v_bzje is null) then
   v_flag := 0;
   else
      if nvl(v_sjje, 0) > nvl(v_bzje, 0) then --实际金额大于标准金额,v_flag为1
        v_flag := 1;
      else
        v_flag := 0;
      end if;
	end if;
	
	return v_flag;
end;

 

分享到:
评论

相关推荐

    oracle自定义日期函数

    Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...

    oracle日期处理函数大全

    以下是一些关键的Oracle日期处理函数和SQL语句的详细说明: 1. **TO_DATE函数**:用于将字符串转换为日期。例如,`TO_DATE('2022-04-05', 'YYYY-MM-DD')`将字符串'2022-04-05'转换为日期。日期格式必须与提供的模式...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    ORACLE常用日期函数集合

    ### ORACLE常用日期函数...以上介绍的Oracle日期函数是数据库开发和管理中非常实用的一部分,通过灵活地运用这些函数,可以有效地解决各种与日期相关的数据处理问题。希望本文能够帮助读者更好地掌握和应用这些函数。

    oracle日期函数全面总结

    本篇文章将全面总结Oracle中的日期函数,帮助你解决日常工作中遇到的各种日期处理问题。 1. **SYSDATE**: 这是最常用的内置常量,返回当前系统的日期和时间。例如: ```sql SELECT SYSDATE FROM DUAL; ``` 2. ...

    oracle日期函数字符函数聚合函数

    Oracle数据库中的日期函数、字符函数和聚合函数是数据库操作中常用的功能,对于数据处理和...以上就是Oracle日期函数、字符函数和部分聚合函数的详细介绍,理解并熟练运用这些函数可以极大地提高数据处理和查询的效率。

    ORACLE中日期和时间函数汇总

    Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个主要的日期和字符转换函数:TO_...

    在oracle中处理日期大全

    TO_DATE 函数是 Oracle 中最常用的日期处理函数之一,它可以将字符串转换为日期类型。其基本语法为: `TO_DATE(string, format)` 其中,`string` 是要转换的字符串,`format` 是转换的格式。 例如: `SELECT TO_...

    Oracle日期函数大全[文].pdf

    Oracle日期函数大全 Oracle日期函数大全是Oracle数据库中处理日期和时间的函数大全,包括TO_DATE、...Oracle日期函数大全提供了多种函数和格式字符串来处理日期和时间,帮助开发者更方便地处理日期和时间相关的操作。

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...

    oracle各种日期函数

    Oracle中的日期函数非常强大且灵活,能够满足多种不同的日期处理需求。通过上面介绍的一些常用函数,如 `SYSDATE`、`EXTRACT`、`TO_CHAR`、`TRUNC` 等,我们可以轻松地获取当前日期的时间信息,并进行相应的日期操作...

    oracle函数大全 oracle函数大全

    Oracle数据库系统提供了丰富的内置函数,这些函数用于处理各种数据类型,包括字符串、数值以及日期等。以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字...

    oracle数据库时间函数

    总的来说,Oracle 的日期处理机制与 SQL Server 有所不同,主要依赖于 `TO_DATE` 和 `TO_CHAR` 函数,以及 NLS 系统参数来处理和显示日期。理解这些函数和参数的工作方式对于在 Oracle 数据库中处理日期和时间至关...

    oracle函数大全分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数.docx

    Oracle 数据库中各种函数的总结和分类,包括分析函数、聚合函数、转换函数、日期型函数、字符型函数、数值型函数和其他函数等,每种函数都有其特点和应用场景,可以根据实际情况选择合适的函数来对数据进行处理和...

    oracle日期函数

    Oracle 日期函数是数据库管理系统中经常使用到的函数,用于处理日期和时间相关的操作。下面是 Oracle 日期函数的详细介绍: 1. 日期和字符转换函数 Oracle 提供了两个重要的日期和字符转换函数:TO_DATE 和 TO_...

    oracle日期时间函数大全.pdf

    Oracle 日期时间函数大全 Oracle 日期时间函数大全是 ...Oracle 日期时间函数大全提供了多种日期和时间相关的函数,用于处理日期和时间相关的操作。这些函数可以在各种应用场景中使用,例如日期转换、时间计算等。

    Oracle中trunc()函数用法处理日期、数字类型数据

    Oracle 中的 TRUNC 函数用法处理日期、数字类型数据 TRUNC 函数是 Oracle 中的一个重要函数,它可以用来截断日期和数字类型的数据。下面我们将详细介绍 TRUNC 函数的用法和特点。 一、日期 TRUNC 函数 TRUNC 函数...

    数据库oracle中日期处理

    在实际应用中,结合SQL查询语句,这些日期处理函数和操作符可以帮助我们完成各种复杂的日期相关任务。例如,找出某个日期之前的一周内的所有记录,或者计算用户注册日期距离现在的天数等。通过熟练掌握这些知识点,...

Global site tag (gtag.js) - Google Analytics