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

把当前时间截取到天

注:以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数字函数了解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值