Oracle 获取当前日期是月的第几周
函数FUNC_GET_WEEKOFMONTH: IW 是年的自然周; WW是年的第一天起开始算7天为一周
FUNCTION FUNC_GET_WEEKOFMONTH (V_PSD DATE)
RETURN NUMBER
IS
N_WEEK NUMBER (11) := 0;
BEGIN
SELECT TO_CHAR (V_PSD, 'IW') - TO_CHAR (TRUNC (V_PSD, 'MM'), 'IW') + 1 INTO N_WEEK FROM DUAL;
RETURN NVL (N_WEEK, 0);
EXCEPTION
WHEN OTHERS
THEN
LOGGER.ERROR (SUBSTR (SQLERRM, 1, 512) || ',Error');
RETURN 0;
END FUNC_GET_WEEKOFMONTH;
获取当前日期所在月的每一周的周一~周日,结果如下图:

代码:
PROCEDURE PRC_Z_WEEK_CONFIG(CUR_DATE IN VARCHAR2, EXITCODE OUT NUMBER) AS
/******************************************************************************
NAME:
documnet:
REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
******************************************************************************/
GV_LOGIC_NAME VARCHAR2(40) := 'Z_WEEK_CONFIG;';
V_MON_FIRST DATE;
V_MON_CUR DATE;
V_MON_END DATE;
V_MON_DAY DATE;
V_SUN_DAY DATE;
V_FLAG VARCHAR(2);
V_WEEK_NO INTEGER;
BEGIN
EXITCODE := -1;
LOGGER.INFO(GV_LOGIC_NAME || ':' || ' ' || ' Start');
if CUR_DATE is null then
V_MON_CUR := V_SYSDATE;
else
V_MON_CUR := to_date(CUR_DATE, 'yyyymmdd');
END IF;
V_MON_FIRST := LAST_DAY(ADD_MONTHS(V_MON_CUR, -1)) + 1; -- the first day of month
V_MON_END := LAST_DAY(V_MON_CUR); -- the last day of month
V_MON_DAY := V_MON_FIRST; -- monday : the first day of month is monday too
V_SUN_DAY := V_MON_FIRST + (8 - TO_NUMBER(TO_CHAR(V_MON_FIRST, 'd'))); -- sunday : the end day of month is sunday too
V_FLAG := 'N';
V_WEEK_NO := 1;
DELETE FROM z_week_config;
while v_mon_end > v_sun_day loop
if V_MON_DAY = trunc(V_MON_DAY, 'd') then
v_sun_day := V_MON_DAY;
else
v_sun_day := v_mon_day + (8 - to_number(to_char(v_mon_day, 'd')));
end if;
if v_sun_day > v_mon_end then
v_sun_day := v_mon_end;
END IF;
if v_mon_cur >= v_mon_day and v_mon_cur <= v_sun_day then
v_flag := 'Y';
END IF;
insert into z_week_config
(version_day, mon_day, sun_day, icon, week_no, flag)
values
(v_mon_cur,
v_mon_day,
v_sun_day,
to_char(v_mon_day, 'mm/dd') || '~' || to_char(v_sun_day, 'mm/dd'),
'WEEK' || v_week_no,
v_flag);
v_mon_day := v_sun_day + 1;
v_week_no := v_week_no + 1;
end loop;
COMMIT;
----- if this month is not enough 6 weeks,then add to 6 weeks
while v_week_no <= 6 loop
insert into z_week_config
(version_day, week_no, flag)
values
(v_mon_cur, 'WEEK' || v_week_no, 'N');
v_week_no := v_week_no + 1;
end loop;
COMMIT;
LOGGER.INFO(GV_LOGIC_NAME || ':' || '' || ',Success');
EXITCODE := 0;
EXCEPTION
WHEN OTHERS THEN
EXITCODE := SQLCODE;
LOGGER.ERROR;
END PRC_Z_WEEK_CONFIG;
Oracle 获取当前日期是月的第几周的更多相关文章
- Oracle 获取当前日期及日期格式
http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html Oracle 获取当前日期及日期格式 获取系统日期: SYSDATE() 格式化日期: ...
- js获取当前日期一年的第几周
获取当前日期一年中的第几周 function theWeek() { ; now = new Date(); years = now.getYear() ) years += ); days[] = ...
- js获取几个月前,几周前时间。
/** * DK 命名空间 防止全局变量污染 */ var DK = {} ; /** * 获取前几个月,默认为一个月,当前时间 * @author duke * @date 格式为yy ...
- moment.js获取当前日期是当年的第几周
/** * 实现当前日期是当年的第几周,再向前和向后推几周 * js数组保存当前日期的前后两周(共五周的数据) * */ var initSearchMajorChanges = function() ...
- oracle获取年、月、日
--获取年 select extract(year from date'2011-05-17') year from dual; --获取月 select extract(month from dat ...
- Oracle 之 获取当前日期及日期格式化
Oracle 获取当前日期及日期格式: 获取系统日期: SYSDATE 格式化日期: TO_CHAR(SYSDATE, 'YY/MM/DD HH24:MI:SS) ...
- javascript 添加行,删除行,datepicker获取当前日期和上一个月日期并设置格式,笔记
$(function () { getdatepicker(); today(); getPreMonth(); getdatetimepicker(); }); function today(){ ...
- JS中在当前日期上追加一天或者获取上一个月和下一个月
/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date. ...
- Oracle获取系统时间及格式化
Oracle 获取当前日期及日期格式 获取系统日期: SYSDATE() 格式化日期: TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) ...
随机推荐
- Linux—查看远程Linux系统运行时间
[选择题]在Shell环境下,如何查看远程Linux系统运行了多少时间? A.scp user@被监控主机ip "uptime" B.ssh user@被监控主机ip " ...
- JDK7 JDK8 的安装 且不同版本之间的切换
myeclipse 论坛下载 https://www.myeclipsecn.com/download/ 用户名:xcj26 邮箱:xcj26@126.com 密码: 26**_X** 版本: Jav ...
- Springboot websocket使用
1)基本概念 1.http与websocket http超文本传输协议,大家都非常熟悉,http有1.0.1.1. 2.0几个版本,从http1.1起,默认都开启了Keep-Alive,保持连接持续性 ...
- 学习 vue 需要了解的内容
总结 vue 的目录 1. vue 基础 指令 事件 动态的属性 组件 动画 2. vue 组件通信 1. 父传子 props 2. 子传父 ref 3. 插槽 4. 组件的生命周期 3. vue 的 ...
- 一、基础篇--1.2Java集合-HashMap死循环问题
为什么HashMap会出现死循环 首先,我们知道java的HashMap不是线程安全的.多线程下应该使用ConcurrentHashMap. HashMap底层是基于动态数组和单向链表(JDK1.7, ...
- C++ STL 中 map 容器
C++ STL 中 map 容器 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它 ...
- Mysql general_log 日志详解
开启 general log 将所有到达MySQL Server的SQL语句记录下来. 一般不会开启开功能,因为log的量会非常庞大.但个别情况下可能会临时的开一会儿general log以供排障使 ...
- 3709: [PA2014]Bohater
3709: [PA2014]Bohater 或者:Bohater 题解 好狠啊这个题 z 要开 long long ,可能算掉血回血的时候会爆 long long 吧 首先把能回血的怪打死(不然你后面 ...
- 搭建Java服务器,并且实现远程安全访问linux系统
1.通过ssh实现安全远程访问linux系统 ssh :secure shell 加密: 1. 对称加密 (加密密钥与解密密钥相同) des ...
- ASimpleCache源码分析
ASimpleCache里只有一个JAVA文件——ACache.java,首先我用思维导图制作了ACache类的详细结构图: 通过分析官方给的demo来驱动源码分析吧 以字符串存储为例(官方给的dem ...