oracle中单行函数日期时间函数总结
表中存在伪列:sysdate,systimestamp 伪列存在但是不显示
select sysdate from dual;
select systimestamp from dual;
日期计算公式:
日期+天数=日期
日期-天数=日期
日期-日期=天数
函数编号 | 函数描述 | 函数使用实例 |
1 |
返回 日期 add_months(列|日期,月数) 返回增加月数后的当前日期 |
select add_months(sysdate,3) 今天日期是2019.05.27,返回的日期是2019.08.27 |
2 | 返回 月数 months_between(列|日期,列|日期) | select months_between(sysdate,hiredate) from emp 返回两个日期之间的月数 |
3 | 返回 日期 last_day(列|日期) 返回日期所在月的最后一天 | 例:select last_day(sysdate) from dual; 当前日期为2019.05.27 返回2019.05.31的日期数据 |
4 | 返回 日期 next_day(列|日期,星期几|数字)返回下一个星期几的日期(星期为英文),如果为数字的时候,是下个星期的第几天,周日是第一天 |
例:select next_day(sysdate,1) from dual; 例:select next_day(sysdate,'Tues') from dual |
综合练习题:
2010年4月2日,距离现在多少年,多少月多少日
第一步计算距离现在多少个整月:
select trunc(months_between(sysdate,to_date('2010-04-02','yyyy-mm-dd'))) from dual;
第二步计算距离现在多少年
select trunc(months_between(sysdate,to_date('2010-04-02','yyyy-mm-dd'))/12) from dual;
第二步距离现在除了年以外的整数月
select mod(trunc(months_between(sysdate,to_date('2010-04-02','yyyy-mm-dd'))),12) dual;
第三步求出距离现在时间小于三十天的日期,两个日期相隔时间为整数月的日期
select trunc(sysdate-add_months(to_date('2010-04-02','yyyy-mm-dd'),trunc(months_between(sysdate,to_date('2010-04-02','yyyy-mm-dd'))))) 天数 from dual;