当前位置:网站首页>Oracle 日历表详解(含节假日)
Oracle 日历表详解(含节假日)
2022-08-03 05:22:00 【鱼丸丶粗面】
1 概述
2 示例
2.1 判断双休日
-- 2022 年全年: 364 天
select date '2023-01-01' - date '2022-01-01' - 1 天数
from dual;
-- 系统默认 和 日常使用习惯
select to_char(sysdate, 'D') 默认天,
to_char(sysdate - 1, 'D') 习惯天
from dual;
-- 核心逻辑
select date '2022-01-01' + rownum - 1 日期,
to_char(date '2022-01-01' + rownum - 2, 'D') 星期几
from dual
connect by rownum <= 364;
2.2 判断节假日
with t_date_base as
( -- 一般日
select date '2022-01-01' + rownum - 1 日期,
to_char(date '2022-01-01' + rownum - 2, 'D') 星期几
from dual
connect by rownum <= 364),
t_jjr as
( -- 节假日
select date '2022-01-29' 日期, '补班' 日期类型 from dual
union all
select date '2022-01-30' 日期, '补班' 日期类型 from dual
union all
select date '2022-01-31' 日期, '除夕' 日期类型 from dual
union all
select date '2022-02-01' 日期, '春节' 日期类型 from dual)
select t1.日期,
t1.星期几,
(case -- 注意顺序
when t2.日期 is not null and t2.日期类型 <> '补班' then
'节假日'
when t2.日期 is not null and t2.日期类型 = '补班' then
'工作日'
when t1.星期几 in ('6', '7') then
'节假日' -- 双休日
else
'工作日'
end) 日期类型
from t_date_base t1,
t_jjr t2
where t2.日期(+) = t1.日期
order by t1.日期;
查询结果:(部分)
日期 星期几 日期类型
2022/1/24 1 工作日
2022/1/25 2 工作日
2022/1/26 3 工作日
2022/1/27 4 工作日
2022/1/28 5 工作日
2022/1/29 6 工作日
2022/1/30 7 工作日
2022/1/31 1 节假日
2022/2/1 2 节假日
边栏推荐
猜你喜欢
随机推荐
【函数与递归】7.19
7.7(5)
A-B数对问题|UPC-Count Interval|洛谷-P1102A-B数对
小码农的第一篇博客
中国生活服务O2O行业发展现状与市场规模预测报告2022~2028年
嵌入式实验三(代码几乎都要改才能运行)
EIP-5058 能否防止NFT项目方提桶跑路?
当奈飞的NFT忘记了web2的业务安全
7.17(7)
Flask,7
私有变量(private) 【详细+易懂】
uni-app 滚动到顶部/指定位置
vivado遇到的问题
中国生产力促进中心”十四五”规划与发展规模分析报告2022~2028年
The result of request.getParameter is on
Qlik Sense 字符串截取和拼接详解(Left、Right、&)
【源码解读】火爆的二舅币真的跑路了吗?
Go (二) 函数部分1 -- 函数定义,传参,返回值,作用域,函数类型,defer语句,匿名函数和闭包,panic
【圣诞节给爱的人打印一颗圣诞树吧】超详细代码实现——圣诞树打印
该描述怎么写成SQL语句