当前位置:   article > 正文

Oracle日期处理整理_yyyymmddhh24miss

yyyymmddhh24miss
1.获取日期元素

注意:
1.hh24写法指24小时,Oracle默认是12小时
2.分钟用mi,不要用mm,因为与之前的MM冲突
    1-12小时写法 yyyyMMdd24miss(Oracle默认)
    1-24小时写法 yyyyMMddHH24miss
获取日期元素:
select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual; //日期转化为字符串
select to_char(sysdate,‘yyyy’) from dual; //获取时间的年
select to_char(sysdate,‘mm’) from dual; //获取时间的月
select to_char(sysdate,‘dd’) from dual; //获取时间的日
select to_char(sysdate,‘hh24’) from dual; //获取时间的时
select to_char(sysdate,‘mi’) from dual; //获取时间的分
select to_char(sysdate,‘ss’) from dual; //获取时间的秒

获取当年/当月哪一周
– 获取指定时间为哪一周
select to_char(to_date(‘20200805’,‘yyyy-mm-dd hh24:mi:ss’),‘w’) FROM dual;

ww:按每年的1月1日为第一周第一天,1月8日为第二周第一天
w:与ww功能类似,不过它是按每月的1日为每周第一天,例如1日为当月第一周第一天,8日为第二周第一天
iw:自然周,为星期一至星期日算一周,且每年的第一个星期一为第一周

//查询今年第几周
select to_char(sysdate,‘ww’) from dual; //每天第一天为第一周第一天
select to_char(sysdate,‘iw’) from dual; //自然周
// 查询本月第几周
select to_char(sysdate,‘w’) from dual;

select trunc(日期,‘d’)+1 from dual; --意周日为一周起始日期
select trunc(日期,‘iw’) from dual;–意周日为一周结束日期

时间精确到毫秒用timestamp
– 时间精确到毫秒
select to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss.ff ') from dual;
select to_timestamp(‘2003-10-2410:48:45.656000’,‘yyyy-mm-dd hh24:mi:ssxff’) from dual;
select to_char(systimestamp,‘yyyy-mm-ddhh24:mi:ssxff’) time1, to_char(current_timestamp) time2 from dual;
select to_char(systimestamp, ‘yyyymmddhh24missff’),to_char(systimestamp, ‘yyyymmddhh24miss’),to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss.ff ') from dual;
select substr(to_char(systimestamp, ‘yyyymmddhh24missff’),0,17) from dual;
select cast(systimestamp as date) from dual;

2.日期转换

系统当前时间SYSDATE: ‘2020/8/3 16:26:52’;
select to_char(SYSDATE,‘yyyyMMddHH24miss’) from dual;
select to_date(‘20200803140816’,‘yyyyMMddHH24miss’) from dual;
select to_date(‘2020-08-03 00:00:00’,‘yyyy-mm-dd hh24:mi:ss’) FROM dual;

3.trunc:截断到最接近的日期,单位为天

select trunc(sysdate, ‘mm’) from dual – 返回当月第一天.
select trunc(sysdate,‘yy’) from dual – 返回当年第一天
select trunc(sysdate,‘dd’) from dual --返回当前年月日
select trunc(sysdate,‘yyyy’) from dual --返回当年第一天
select trunc(sysdate,‘d’) from dual --返回当前星期的第一天:星期天
select trunc(sysdate, ‘hh’) from dual --返回当前小时时间
select trunc(sysdate, ‘mi’) from dual --TRUNC()函数没有秒的精确

select trunc(to_date(last_day(sysdate))) + (8****60+30)/ (24**60) from dual;–获取当前月最后一天2020/8/31 8:30:00
select trunc(sysdate+1) + (8 * 60+30) / (24 * 60) from dual;–获取下一天的8点半日期2020/8/4 8:30:00

4.日期加减

加:
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,to_char(sysdate+7,‘yyyy-mm-dd HH24:MI:SS’) from dual; --加1星期
select sysdate,to_char(sysdate+1,‘yyyy-mm-dd HH24:MI:SS’) from dual; --加1天
select sysdate,to_char(sysdate+1/24,‘yyyy-mm-dd HH24:MI:SS’) from dual; --加1小时
select sysdate,to_char(sysdate+1/24/60,‘yyyy-mm-dd HH24:MI:SS’) from dual; --加1分钟
select sysdate,to_char(sysdate+1/24/60/60,‘yyyy-mm-dd HH24:MI:SS’) from dual; --加1秒

减:
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,‘yyyy-mm-dd HH24:MI:SS’) from dual; --减1星期
select sysdate,to_char(sysdate-1,‘yyyy-mm-dd HH24:MI:SS’) from dual; --减1天
select sysdate,to_char(sysdate-1/24,‘yyyy-mm-dd HH24:MI:SS’) from dual; --减1小时
select sysdate,to_char(sysdate-1/24/60,‘yyyy-mm-dd HH24:MI:SS’) from dual; --减1分钟
select sysdate,to_char(sysdate-1/24/60/60,‘yyyy-mm-dd HH24:MI:SS’) from dual; --减1秒

5.round:返回指定的小数位元数进行四舍五入运算的结果

select round(123.456, 0) from dual; 回传 123
select round(123.456, 1) from dual; 回传 123.5
select round(123.456, 2) from dual; 回传 123.46
select round(123.456, 3) from dual; 回传 123.456
select round(-123.456, 2) from dual; 回传 -123.46

6.计算时间差

注:oracle时间差是以天数为单位,所以换算成年月,日
select floor(to_number(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’))/365) as spanYears from dual //时间差-年
select ceil(moths_between(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’))) as spanMonths from dual //时间差-月
select floor(to_number(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’))) as spanDays from dual //时间差-天
select floor(to_number(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’))*24) as spanHours from dual //时间差-时
select floor(to_number(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’)) * 24 * 60) as spanMinutes from dual //时间差-分
select floor(to_number(sysdate-to_date(‘2020-08-03 18:25:03’,‘yyyy-mm-dd hh24:mi:ss’)) * 24 * 60 * 60) as spanSeconds from dual //时间差-秒

7.定时器用到的时间

1、 每分钟执行

Interval => TRUNC(sysdate,’mi’) + 1 / (24*60)

2、 每天定时执行

例如:每天的凌晨2点执行

Interval => TRUNC(sysdate) + 1 +2 / (24)

3、 每周定时执行

例如:每周一凌晨2点执行

Interval => TRUNC(next_day(sysdate,2))+2/24 --星期一,一周的第二天

4、 每月定时执行

例如:每月1日凌晨2点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+2/24

5、 每季度定时执行

例如每季度的第一天凌晨2点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q’) + 2/24

6、 每半年定时执行

例如:每年7月1日和1月1日凌晨2点

Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+2/24

7、 每年定时执行

例如:每年1月1日凌晨2点执行

Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+2/24

荐:
ORACLE日期时间函数大全
oracle中常用的时间格式转换

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/217253
推荐阅读
相关标签
  

闽ICP备14008679号