Welcome 微信登录

首页 / 数据库 / MySQL / 符合中国人习惯的Oracle取周的日期函数

最近在帮HR抓加班记录的统计数据。HR希望能by周统计加班时数。但Oracle的日期函数计算周时是周日算第一天,周六算最后一天。而中国人的习惯是周一算第一天,周日算最后一天。而且,Oracle的函数返回的是第几周,是个数字,HR还要再根据数据推算是那个日期段。自己编写了一个符合我们要求的小函数,返回值也科学很多,呵呵!
 
FUNCTION get_wk (p_date IN DATE)
 
      RETURN VARCHAR2
 
 IS
 
      v_wk VARCHAR2 (30);
 
      v_n    NUMBER;
 
 BEGIN
 
      SELECT TO_NUMBER (TO_CHAR (p_date, "D"))
 
        INTO v_n
 
        FROM DUAL;
 
 
 
      IF v_n = 1
 
      THEN
 
       v_wk :=
 
             TO_CHAR (p_date - 6, "YYYY/MM/DD")
 
            || "-"
 
            || TO_CHAR (p_date, "YYYY/MM/DD");
 
      ELSE
 
       v_wk :=
 
             TO_CHAR (p_date + (7 - (5 + v_n)), "YYYY/MM/DD")
 
            || "-"
 
            || TO_CHAR (p_date + (7 - (5 + v_n)) + 6, "YYYY/MM/DD");
 
      END IF;
 
 
 
      RETURN v_wk;
 
 END;相关阅读:Oracle函数之Replace() http://www.linuxidc.com/Linux/2013-01/77406.htmOracle函数大全 http://www.linuxidc.com/Linux/2012-12/75875.htmOracle函数之case和decode的用法区别及性能比较 http://www.linuxidc.com/Linux/2012-08/67104.htmOracle函数和存储过程简单实例 http://www.linuxidc.com/Linux/2012-05/61448.htmOracle函数 通过秒数或分钟数获取时间段 http://www.linuxidc.com/Linux/2012-02/54480.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12ORA-01654 错误的解决方法ORA-17047问题解决相关资讯      Oracle函数 
  • Oracle字符串函数总结  (06月20日)
  • Oracle lag()与lead() 函数  (12/01/2015 20:41:24)
  • Oracle ascii函数  (07/26/2015 08:46:01)
  • Oracle使用简单函数  (06月09日)
  • REGEXP_SUBSTR函数的整理  (08/20/2015 20:41:01)
  • Oracle dump函数  (07/26/2015 08:40:01)
本文评论 查看全部评论 (0)
表情: 姓名: 字数