months_between,add_months,next_day,last_day,round,trunc,sysdate
sysdate关键字,表示系统的当前时间
select sysdate from dual;
结果:2022/5/4 12:38:4
select sysdate+1 from dual;
当前时间加1天
结果:2022/5/5 12:39:34
select sysdate-1 from dual;
当前时间减1天
结果:2022/5/3 12:40:05
select sysdate+1/24 from dual
显示系统时间1小时后的时间
结果:2022/5/4 13:40:35
months_between(日期1,日期2):返回两个日期之间的月数
select months_between(sysdate+30,sysdate) from dual;
结果:0.967741935483871
add_months:在指定日期上增加月数
select add_months(sysdate,2) from dual;
结果:2022/7/4 12:50:01
select add_months('4-5月-2022',2) from dual;
结果:2022/7/4
next_day:指定日期的下一个星期几是那一天
select next_day(sysdate,'星期五') from dual;
结果:2022/5/6 13:01:14
等价于:select next_day(sysdate,6) from dual;
结果:2022/5/6 13:01:14
注意:如果要使用英文的星期,则需把语言环境修改为英文
周一到周日对应的值为: 1 2 3 4 5 6 7
周日 周一 周二 周三 周四 周五 周六
填写7以外的数字,无效
last_day:指定日期的最后一天
select last_day(sysdate) from dual;
结果:2022/5/31 13:07:32
select last_day('4-5月-2022') from dual;
结果:2022/5/31
round:对日期进行四舍五入
把当前日期四舍五入到年
注意:若为年,则以7月为节点,若当前时间月大于7月,则返回下一年1月1日,反之。
select round(sysdate,'year') from dual;
select round(add_months(sysdate,1)) from dual;
结果:2022/1/1
select round(add_months(sysdate,2),'year') from dual;
结果:2023/1/1
把当前日期四舍五入到月
注意:以16号,作为节点,若当前日期大于16号,则返回下月1号,反之。
select round(sysdate,'month') from dual;
结果:2022/5/1
select round(sysdate+15,'month') from dual;
结果:2022/6/1
把当前日期四舍五入到星期
注意:以周三为节点(今天周三),往上则为上周日,往下则为本周日
select round(sysdate-3,'day') from dual;
select round(sysdate-2,'day') from dual;
select round(sysdate-1,'day') from dual;
结果均为:2022/5/1
select round(sysdate,'day') from dual;
结果:2022/5/8
把当前时间截取到天
注:以12点为节点
select round(sysdate,'dd') from dual;
结果:2022/5/5
只要过了十二点,感觉一天也差不多快要结束了。
select round(sysdate-3/23,'dd') from dual;
结果:2022/5/4
总结:
round(sysdate,'year/y/yy/yyy/yyyy') 年 7月为节点
round(sysdate,'mm/month') 月 16号为节点
round(sysdate,'d/day') 星期 星期三为节点
round(sysdate,'dd') 天 12点为节点
trunc:对指定日期进行截取,直接截取不进位
select trunc(sysdate,'yyyy') from dual;
只截取到年,返回当年1月1号
结果:2022/1/1
select trunc(sysdate,'mm') from dual;
只截取当月,返回当月1号
结果:2022/5/1
select trunc(sysdate,'d') from dual;
结果:2022/5/1
select trunc(sysdate+10,'d') from dual;
结果:2022/5/8
注意:对星期截取,返回日期为最靠近上周日的那个日期
select trunc(sysdate,'dd') from dual;
结果:2022/5/4
返回当天日期
若对Oracle字符函数感兴趣,可点击Oracle字符函数了解。
若对Oracle数字函数感兴趣,可点击Oracle数字函数了解。