制作报表或数据统计之ORACLE数据库函数

简介:在开发过程中经常会有需要制作报表或数据统计的模块,在这里就记录本人开发过程中使用过制作报表的ORALCE函数。


制作报表几个原则:

  • 所有复杂查询语句都新建一个视图保存

例如:

1.创建一个视图

create or replace view v_period as
  SELECT TO_CHAR( SYSDATE ,'YYYY-MM-DD' ) 今天 FROM DUAL

2.查询视图语句

select v.* from V_PERIOD v

制作报表使用的ORACLE语句

一、获取本周和下一个周周一到周五日期和根据日期得到是星期几

1、TO_CHAR 结合 DECODE、TO_NUMBER 函数求得周一到周五日期

/**
 * 获取本周一到周日日期
 * 提供周一到周日的日期和当前日期是星期几
 * 1.TO_CHAR(SYSDATE,'D') :求得当前日期是一周的第几天 
 * 2.TO_NUMBER( char ) :该函数是将一个字符串所包含的数据转化为NUMBER型数据
 * 3.DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) :在逻辑编程中,经常用到If – Then –Else 进行逻辑判断
 * @author LUOXINYU
 * @version 1.0, 2013-05-28
 */

  SELECT TO_CHAR( SYSDATE ,'YYYY-MM-DD' ) 今天,   
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 2,'YYYY-MM-DD' ) 星期一, 
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 3,'YYYY-MM-DD' ) 星期二,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 4,'YYYY-MM-DD' ) 星期三,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 5,'YYYY-MM-DD' ) 星期四,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 6,'YYYY-MM-DD' ) 星期五,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 7,'YYYY-MM-DD' ) 星期六,
        TO_CHAR( SYSDATE - TO_NUMBER( TO_CHAR(SYSDATE,'D') ) + 1,'YYYY-MM-DD' ) 星期日,
        DECODE(TO_CHAR(SYSDATE,'D'), 
              '1','星期日', 
              '2','星期一', 
              '3','星期二', 
              '4','星期三', 
              '5','星期四', 
              '6','星期五', 
              '7','星期六') 星期几
  FROM DUAL

2、NEXT_DAY  结合 SUBSTR 函数求得下一个周一到周五日期

/**
 * 获取下一个周一到周日日期
 * 提供下一个周一到周日的日期和当前日期是星期几
 * 1.NEXT_DAY : 用于计算x时间后第一个星期y的时间,x 是一个时间,y 是星期一至星期日中的一个。也可能用数字1 - 7代替,但是用数字的时候1是代表的周日2才是代表的周一
 * 2.SUBSTR :字符串截取函数,substr(string, start_postion, [lenght])
 * @author LUOXINYU
 * @version 1.0, 2013-05-28
 */ 
  SELECT TO_CHAR( SYSDATE ,'YYYY-MM-DD' ) 今天,   
       '星期'||SUBSTR('日一二三四五六',TO_NUMBER(TO_CHAR(SYSDATE,'D')),1) 星期几, 
       TO_CHAR(NEXT_DAY(sysdate,1),'YYYY-MM-DD') 星期日,
       TO_CHAR(NEXT_DAY(sysdate,2),'YYYY-MM-DD') 星期一, 
       TO_CHAR(NEXT_DAY(sysdate,3),'YYYY-MM-DD') 星期二, 
       TO_CHAR(NEXT_DAY(sysdate,4),'YYYY-MM-DD') 星期三, 
       TO_CHAR(NEXT_DAY(sysdate,5),'YYYY-MM-DD') 星期四, 
       TO_CHAR(NEXT_DAY(sysdate,6),'YYYY-MM-DD') 星期五, 
       TO_CHAR(NEXT_DAY(sysdate,7),'YYYY-MM-DD') 星期六
  FROM DUAL


参考文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值