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) ...
随机推荐
- Visio:为什么按下方向键,选中的目标不动,绘图区(页面)却在移动
造冰箱的大熊猫,本文适用于Microsoft Visio 2007@cnblogs 2018/12/12 检查下键盘的“Scroll Lock”键是不是被激活了(键盘上对应的指示灯被点亮).Scrol ...
- HDU 3826 Squarefree number ( 唯一分解定理 )
题目链接 题意 : 给出一个数.问其能不能被任何一个平方数整除.如果可以则输出 No 即不是 Square-free Number .否则输出 Yes 分析 : 首先 N 有 1e18 那么大.不能暴 ...
- zabbix监控部署
zabbix是一款开源的监控软件,下面来一起学习一下zabbix监控的部署吧 环境: 主机名 地址 系统 角色 tiandong 192.168.209.3 centos6.5 服务端 winter ...
- 邻居子系统输出 之 neigh_output、neigh_hh_output
概述 ip层在构造好ip头,检查完分片之后,会调用邻居子系统的输出函数neigh_output进行输出,输出分为有二层头缓存和没有两种情况,有缓存时调用neigh_hh_output进行快速输出,没有 ...
- State Threads之网络架构库
原文: State Threads for Internet Applications 介绍 State Threads is an application library which provide ...
- 【Java笔试】OYO校招Java工程师|牛客平台,算法:字符串翻转。附选择题解析
文章目录 1.Java笔试算法题:字符串翻转 2.单选题: 2.1.同一进程下的多个线程可以共享哪一种资源:data section 2.2.一个树形的叶结点在前序遍历和后序遍历下,可以相同的相对位置 ...
- Python中列表的使用
python中的列表与java中的数组非常类似,但使用方法比java中数组简单很多,python中的数据类型不需要显示声明,但在使用时必须赋值,列表元素下标从0开始 初始化列表(初始化一个包含五个元素 ...
- 往Angular应用程序中添加DevExtreme
To start this tutorial, you need an Angular 5+ application created using the Angular CLI. Refer to t ...
- Class 源码解读
Class 获取包信息 /** * 获取此对象所在的包 * @revised 9 * @spec JPMS */ public Package getPackage() { // 原始类型和数组无 P ...
- System 源码阅读
System 属性说明 /** * System 类包含了几个有用的字段和方法,并且不能被实例化. * * @author unascribed * @since 1.0 */ public fina ...