ORACLE 时间日期处理小记

Oracle 的时间格式很多,最常见的格式类型就是 yyyymmdd 形式。当然如果遇到其他的时间类型就需要花点时间进行转换了。

今天说的是如何获取几个月前的时间日期

*表中存有yyyy-mm-dd varchar2 类型的 字段 data_dt 

1、获取前一年的数据  (很少会有需求是查找前一年的数据)

select * from table a where substr(to_char(a.data_dt),1,4)= substr('20190101',1,4)-1  --ok 

2、获取前 X 月的数据日期(常见)x=24 

select add_months(to_date('20200909','yyyymmdd'),-24) from dual ;--获取到前24个月的日期是哪一天

select  to_char(add_months(to_date('20200909','yyyymmdd'),-24),'yyyymmdd') from dual ;--得到yyyymmdd类型

select to_number( to_char(add_months(to_date('20200909','yyyymmdd'),-24),'yyyymmdd'),99999999) from dual --得到数字类型

 

-----------------------------------------------------------华丽分隔符-----------------------------------------------------------

获取本月第一天

select  TO_CHAR(TRUNC(TO_DATE('20201111', 'YYYYMMDD'), 'MM'), 'YYYYMMDD') from dual;

获取本月最后一天

select to_char(last_day(sysdate),'yyyymmdd') from dual;

获取本月最后一个工作日

   select 
   case when to_char(to_date('20201114','yyyymmdd'),'day')= '星期六' then to_date('20201114','yyyymmdd') -1 
        when to_char(to_date('20201114','yyyymmdd'),'day')= '星期日' then to_date('20201114','yyyymmdd') -2
   else to_date('20201114','yyyymmdd') end 
   
   from dual;

获取上月月初日期 (当 -1 改为 0 的时候可以获取本月初日期)

 SELECT TO_CHAR(ADD_MONTHS(trunc(TO_DATE(TO_CHAR(TRUNC(sysdate, 'mm'), 'yyyy-mm-dd'),'yyyy-mm-dd')),-1),'yyyy-mm-dd')
   FROM dual;

获取上月月末日期 (当 -1 改为 0 的时候可以获取本月末日期)

   SELECT TO_CHAR(last_day(ADD_MONTHS(trunc(TO_DATE(TO_CHAR(TRUNC(sysdate, 'mm'), 'yyyy-mm-dd'),'yyyy-mm-dd')),-1)),'yyyy-mm-dd')
   FROM dual; 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值