ORACLE常用时间查询

ORACLE 常用时间查询

–取当前日期的本月末

SELECT TO_CHAR(LAST_DAY(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'MONTH')),'YYYYMMDD') 本月末 FROM DUAL;
SELECT TO_CHAR(LAST_DAY(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'MM')),'YYYYMMDD') 本月末 FROM DUAL;

–取当前日期的上个月末

SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),-1)),'YYYYMMDD') 上个月末 FROM DUAL;
SELECT TO_CHAR(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'MM')-1,'YYYYMMDD') 上个月末 FROM DUAL;

–取当前日期的下个月末

SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),1)),'YYYYMMDD') 下个月末 FROM DUAL;

–取当前日期的本月初

SELECT TO_CHAR(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'MM'),'YYYYMMDD') 本月初 FROM DUAL;

–取当前日期的上个月初

SELECT TO_CHAR(TRUNC(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),-1),'MM'),'YYYYMMDD') 上个月初 FROM DUAL;

–取当前日志的下个月初

SELECT TO_CHAR(TRUNC(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),1),'MM'),'YYYYMMDD') 下个月初 FROM DUAL;

–取上个月的今天

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),-1),'YYYYMMDD') 上个月的今天 FROM DUAL;

–取去年今天

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(20200903,'YYYYMMDD'),-12),'YYYYMMDD') 去年今天 FROM DUAL;

–取今年年末日期

SELECT TO_CHAR(ADD_MONTHS(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'YYYY'),12)-1,'YYYYMMDD') 今年末 FROM DUAL;

–取去年年末日期

SELECT TO_CHAR(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'YY')-1,'YYYYMMDD') 去年年末 FROM DUAL;

–取去年年初日期

SELECT TO_CHAR(TRUNC(TO_DATE(20200903,'YYYYMMDD'),'YY')- INTERVAL '1' YEAR,'YYYYMMDD') 去年年初 FROM DUAL;

–取当前日期

SELECT TO_CHAR(TO_DATE(20200903,'YYYYMMDD'),'YYYYMMDD') 当前日期 FROM DUAL;

–取昨天日期

SELECT  TO_CHAR(TO_DATE(20200903,'YYYYMMDD')-1,'YYYYMMDD') 昨天 FROM DUAL;

–取明天日期

SELECT  TO_CHAR(TO_DATE(20200903,'YYYYMMDD')+1,'YYYYMMDD') 明天 FROM DUAL;

–取当前时间精确到5位毫秒

SELECT TO_CHAR(SYSTIMESTAMP,'YYYYMMDDHHMMSSFF5') 当前毫秒5 FROM DUAL;

–取当月中的每一天

SELECT TO_CHAR(TO_DATE(20200401,'YYYYMMDD') + LEVEL-1,'YYYYMMDD') DT FROM DUAL CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE(20200401,'YYYYMMDD')),'DD');
SELECT TO_CHAR(TO_DATE(TO_CHAR(TRUNC(TO_DATE(20190203,'YYYYMMDD'),'MM'),'YYYYMMDD'),'YYYYMMDD') + LEVEL-1,'YYYYMMDD') DT FROM DUAL CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE(20190203,'YYYYMMDD')),'DD');

–取当月到今天为止的每一天

SELECT TO_CHAR(TO_DATE(TO_CHAR(TRUNC(TO_DATE(20190203,'YYYYMMDD'),'MM'),'YYYYMMDD'),'YYYYMMDD') + LEVEL-1,'YYYYMMDD') DT FROM DUAL CONNECT BY LEVEL <= TO_CHAR(TO_DATE(20190203,'YYYYMMDD'),'DD');

–指定周数,求当年该周的时间范围

SELECT * FROM ( SELECT LEVEL AS week,  
DECODE(SIGN(5-DECODE(TO_CHAR(PM.SD,'D'),'1','7',TO_CHAR(PM.SD,'D'))),-1,  
  NEXT_DAY(PM.SD+(LEVEL-1)*7,2),NEXT_DAY(PM.SD+(LEVEL-1)*7-7,2)) AS 当周第一天,  
DECODE(SIGN(5-DECODE(TO_CHAR(PM.SD,'D'),'1','7',TO_CHAR(PM.SD,'D'))),-1,  
  NEXT_DAY(PM.SD+(LEVEL-1)*7,2),NEXT_DAY(PM.SD+(LEVEL-1)*7-7,2)) + 6 AS 当周最后一天  
  FROM DUAL D  
  LEFT JOIN (SELECT TRUNC(TO_DATE('2021-01-01','YYYY-MM-DD'),'YYYY') AS SD FROM DUAL) PM ON 1=1  
CONNECT BY LEVEL<=53)dd 
 WHERE dd.week = 33;

–查询一段时间范围20220701-20220801

select to_char(datekeey,'yyyymmdd') riqi from (  
    select
        date'2022-07-01' + (rownum - 1)  datekeey
    from  dual connect by rownum <= (date'2022-08-01' - date'2022-07-01' + 1)
    order by datekeey
) order by datekeey;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值