網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Oracle數(shù)據(jù)庫(kù)如何獲取當(dāng)前自然周,當(dāng)前周的起始和結(jié)束日期_oracle
作者:WziH_CSDN ? 更新時(shí)間: 2023-01-10 編程語(yǔ)言Oracle獲取當(dāng)前自然周,當(dāng)前周的起始和結(jié)束日期
SELECT to_char(sysdate,'iw') from dual; --本周是第幾個(gè)自然周
SELECT to_char(sysdate,'yyyy') into v_sbzq_nf from dual; -- 當(dāng)前年份
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW'),'yyyy-MM-dd') FROM DUAL;--本周的起始時(shí)間(本周周一日期)
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'YYYY-MM-DD'),'IW') + 6,'yyyy-MM-dd') FROM DUAL;--本周的結(jié)束時(shí)間(本周周日日期)
下面是使用存儲(chǔ)過(guò)程向數(shù)據(jù)庫(kù)中插入一條數(shù)據(jù)
數(shù)據(jù)格式 : 上報(bào)周期 起始時(shí)間 結(jié)束時(shí)間
xxxx年第xx周 xx.xx xx.xx
存儲(chǔ)過(guò)程如下:
create or replace procedure PRC_T_SJSB_ZYGYPJG is
v_sbzq_zs varchar2(20);--上報(bào)周期周數(shù)
v_sbzq_nf varchar2(10); --上報(bào)周期年份
v_start varchar2(10); --起始月份
v_end varchar2(10); --結(jié)束月份
v_sbzq varchar2(20); --上報(bào)周期
begin
SELECT to_char(sysdate,'iw') into v_sbzq_zs from dual; --本周是第幾個(gè)自然周
SELECT to_char(sysdate,'yyyy') into v_sbzq_nf from dual;
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW'),'yyyy-MM-dd') into v_start FROM DUAL;--本周的起始時(shí)間(本周周一日期)
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'YYYY-MM-DD'),'IW') + 6,'yyyy-MM-dd') into v_end FROM DUAL;--本周的結(jié)束時(shí)間(本周周日日期)
v_start:=substr(v_start,6);
v_end :=substr(v_end,6);
v_start :=replace(v_start,'/','.');
v_start :=replace(v_start,'-','.');
v_end :=replace(v_end, '/','.');
v_end :=replace(v_end, '-','.');
v_sbzq :=v_sbzq_nf||'年第'||v_sbzq_zs||'周';
insert into T_SJSB_ZYGYPJG (sbzq,sbzt,startdate,enddate) values(v_sbzq,'0',v_start,v_end);
commit;
end PRC_T_SJSB_ZYGYPJG;
Oracle獲取自然周數(shù)
在Oracle中,Mysql中以及Hive中,SQL實(shí)現(xiàn)同樣的功能有時(shí)候可能要遵循不同的語(yǔ)法結(jié)構(gòu),尤其在日期操作方面區(qū)別較為明顯。接下來(lái),將Oracle中常用的周期統(tǒng)計(jì)梳理出來(lái)。
1. 按天統(tǒng)計(jì)
Oracle中通過(guò)to_char()函數(shù)來(lái)操作日期變量,通過(guò)其中的格式參數(shù)配置輸出日期的格式。
格式參數(shù)值為’yyyymmdd’時(shí),將日期統(tǒng)一轉(zhuǎn)換為yyyymmdd(年月日)的方式輸出。
select to_char(created_time,'yyyymmdd') as day,count(mobile_no)
from table
where to_char(created_time,'yyyymmdd') >= 20181201
group by to_char(created_time,'yyyymmdd')
order by min(created_time) asc
輸出的結(jié)果如下所示:
2. 按自然周統(tǒng)計(jì)
to_char()函數(shù)的格式參數(shù)值為’iw’時(shí),表示按自然周方式輸出日期在全年中的周數(shù)排序值,自然周即日歷上顯示的周排列結(jié)果。
如果只輸出周數(shù),不便于排查數(shù)據(jù),所以按自然周進(jìn)行聚合時(shí),最好能把該自然周的起始日期或結(jié)束日期顯示出來(lái),使結(jié)果一目了然。
select to_char(created_time,'iw') as week, min(created_time), count(mobile_no)
from table
where to_char(created_time,'yyyymmdd') >= 20181201
group by to_char(created_time,'iw')
order by min(created_time) asc
結(jié)果如下所示,其中week表示周數(shù)。通過(guò)MIN(created_time)可以展示出每個(gè)自然周的起始日期:
3. 按月統(tǒng)計(jì)
to_char()函數(shù)的格式參數(shù)值為’yyyymm’時(shí)可輸出格式為yyyymm(年月)的月份統(tǒng)計(jì)結(jié)果。
select to_char(created_time,'yyyymm') as Month, count(mobile_no)
from table
where to_char(created_time,'yyyymm') >= 20181201
group by to_char(created_time,'yyyymm')
其結(jié)果如下所示:
4. 按季統(tǒng)計(jì)
to_char()的格式參數(shù)值為’q’,可實(shí)現(xiàn)按季度輸出統(tǒng)計(jì)結(jié)果。
select to_char(created_time,'q') as q,count(mobile_no)
from table
where to_char(created_time,'yyyymmdd') >= 20180101
group by to_char(created_time,'q')
order by min(created_time) asc
其結(jié)果如下所示,Q表示季度。
5. 按年統(tǒng)計(jì)
to_char()函數(shù)的參數(shù)值為’yyyy’時(shí)可以實(shí)現(xiàn)按年輸出統(tǒng)計(jì)結(jié)果。
select to_char(created_time,'yyyy') as y, count(mobile_no)
from table
where to_char(created_time,'yyyy') >= 2016
group by to_char(created_time,'yyyy')
order by y asc
其輸出結(jié)果如下所示:
總結(jié)
原文鏈接:https://blog.csdn.net/WziH_CSDN/article/details/109668245
相關(guān)推薦
- 2022-02-14 taro將頁(yè)面滾動(dòng)到指定位置
- 2023-10-15 遍歷 bitset 中為 true 的下標(biāo)
- 2022-05-23 C語(yǔ)言也有封裝,繼承和多態(tài)你知道嗎_C 語(yǔ)言
- 2023-10-14 關(guān)于Smartbi配置Sql Server數(shù)據(jù)源調(diào)用HTTP請(qǐng)求
- 2022-01-18 django中ajax發(fā)送post請(qǐng)求報(bào)403錯(cuò)誤csrf禁止,解決只需三步
- 2022-10-17 React的diff算法核心復(fù)用圖文詳解_React
- 2022-08-07 C#并行庫(kù)Parallel類介紹_C#教程
- 2022-10-16 Python?Celery動(dòng)態(tài)添加定時(shí)任務(wù)生產(chǎn)實(shí)踐指南_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支