Oracle取当前日期的最近工作日

描述:现有一需求,日期表中存放了日期和是否节假日(0-工作日,1-节假日),现在需要取日期表中的最近的工作日。如2017/07/23(周日)最近的工作日应该是2017/07/21(周五)。

DATE_D    IS_HOLIDAY
1    2017/7/17    0
2    2017/7/18    0
3    2017/7/19    0
4    2017/7/20    0
5    2017/7/21    0
6    2017/7/22    1
7    2017/7/23    1
8    2017/7/24    0
9    2017/7/25    0

select t1.date_d,max(t2.date_d)
from table_a t1 left join table_a t2 on (t1.date_d >= t2.date_d and t2.is_holiday=‘0‘)
group by t1.date_d
order by t1.date_d

结果:

DATE_D    MAX(T2.DATE_D)
1    2017/7/17    2017/7/17
2    2017/7/18    2017/7/18
3    2017/7/19    2017/7/19
4    2017/7/20    2017/7/20
5    2017/7/21    2017/7/21
6    2017/7/22    2017/7/21
7    2017/7/23    2017/7/21

时间: 2024-12-16 04:44:22

Oracle取当前日期的最近工作日的相关文章

ORACLE取周、月、季、年的开始时间和结束时间

 1           取周的开始时间和结束时间 取周的开始时间,以星期一为开始. SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'D') + 1 ASA FROM DUAL; A ----------- 2013/11/25 取周的结束时间,以星期日为结束 SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:

Oracle 取两个表中数据的交集并集差异集合

Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要求找出工资2500(不含2500)以上并且是男性(M)的员工编号,那么就要利用这两个表的关系做一个交集了 employee CODE NAME GENDER 001 Tom M 002 Jerry M 003 Ana F salary CODE SALARY 001 2800 002 2500 00

Oracle取查询结果数据的第一条记录SQL

Oracle取查询结果数据的第一条记录SQL: select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from <table> order by <key> desc) where rownum=1;

【Oracle】oracle取最大值和最小值的几个方法汇总

(1)oracle使用keep分析函数取最值记录 -- 取工资sal最大的雇员姓名及其工资,以及工资sal最少的雇员姓名及其工资 select deptno, empno, ename, sal, max(ename) keep(dense_rank FIRST order by sal) over (partition by deptno) as min_sal_man, max(sal) keep(dense_rank FIRST order by sal) over (partition

Oracle 获取当前日期及日期格式

获取系统日期: SYSDATE() 格式化日期:   TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) 或        TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS) 格式化数字:     TO_NUMBER 注:     TO_CHAR  把日期或数字转换为字符串 TO_CHAR(number, '格式') TO_CHAR(salary, '$99,999.99') TO_CHAR(date, '格式') TO_DATE  把字符

ORACLE取周、月、季、年的開始时间和结束时间

 1           取周的開始时间和结束时间 取周的開始时间.以星期一为開始. SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'D') + 1 ASA FROM DUAL; A ----------- 2013/11/25 取周的结束时间.以星期日为结束 SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:

用otl写的oracle取数工具,执行传入在查询语句,把结果输出到文件

项目中经常需要用到此类型的工具 1 #pragma warning (disable:4786) 2 #include <iostream> 3 #include <map> 4 #include <string> 5 using namespace std; 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <algorithm> 9 #define OTL_ORA9I //

怎么取当前日期本周,上周周一与周末的日期

取本周周一与周末: SELECT GETDATE() 当前时间,DATEADD(DAY,-CASE DATENAME(WEEKDAY,GETDATE()) WHEN '星期一' THEN 0        WHEN '星期二' THEN 1 WHEN '星期三' THEN 2 WHEN '星期四' THEN 3 WHEN '星期五' THEN 4 WHEN '星期六' THEN 5 ELSE 6 END,GETDATE()) 星期一日期,DATEADD(DAY,CASE DATENAME(WEE

mysql 取当前日期对应的周一或周日

select subdate(curdate(),date_format(curdate(),'%w')-1)//获取当前日期在本周的周一 select subdate(curdate(),date_format(curdate(),'%w')-2)//获取当前日期在本周的周二 select subdate(curdate(),date_format(curdate(),'%w')-7)//获取当前日期在本周的周日 %W     星期名字(Sunday--Saturday)    %w