最近在帮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)