Oracle函数--日期函数

3.日期函数

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

Oracle函数--日期函数_第1张图片

把当前时间截取到天

注:以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

注意:对星期截取,返回日期为最靠近上周日的那个日期

Oracle函数--日期函数_第2张图片

select trunc(sysdate,'dd') from dual;

结果:2022/5/4

返回当天日期

若对Oracle字符函数感兴趣,可点击Oracle字符函数了解。

若对Oracle数字函数感兴趣,可点击Oracle数字函数了解。

你可能感兴趣的:(Oracle,oracle,数据库,database)