前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle日期函数「建议收藏」

Oracle日期函数「建议收藏」

作者头像
全栈程序员站长
发布2022-09-09 15:25:41
3.1K0
发布2022-09-09 15:25:41
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Oracle日期类型函数是操作日期、时间类型的相关数据,返回日期时间类型或数字类型结果,常用的函数有:SYSDATE()、ADD_MONTHS()、LAST_DAY()、TRUNC()、ROUND()等等。

系统日期、时间函数

SYSDATE函数

该函数没有参数,可以得到系统的当前时间。

案例代码:

代码语言:javascript
复制
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

结果:

SYSTIMESTAMP函数

该函数没有参数,可以得到系统的当前时间,该时间包含时区信息,精确到微秒。

案例代码

代码语言:javascript
复制
select systimestamp from dual;

结果:

数据库时区函数

DBTIMEZONE函数

该函数没有输入参数,返回数据库时区。

案例代码:

代码语言:javascript
复制
select dbtimezone from dual;

结果:

给日期加上指定的月份函数:

ADD_MONTHS(r,n)函数

该函数返回在指定日期r上加上一个月份数n后的日期。其中

r:指定的日期。

n:要增加的月份数,如果N为负数,则表示减去的月份数。

案例代码:

代码语言:javascript
复制
select to_char(add_months(to_date('2018-11-12', 'yyyy-mm-dd'), 1),
               'yyyy-mm-dd'),
       to_char(add_months(to_date('2018-10-31', 'yyyy-mm-dd'), 1),
               'yyyy-mm-dd'),
       to_char(add_months(to_date('2018-09-30', 'yyyy-mm-dd'), 1),
               'yyyy-mm-dd')
  from dual;

结果:(如果指定的日期是月份的最后一天,返回的也是新的月份的最后一天,如果新的月份比指定的月份日期少,将会自动调回有效日期)

月份最后一天函数

LAST_DAY(r)函数

返回指定r日期的当前月份的最后一天日期。

案例代码:

代码语言:javascript
复制
select last_day(sysdate) from dual;

结果:

指定日期后一周的日期函数:

NEXT_DAY(r,c)函数

返回指定R日期的后一周的与r日期字符(c:表示星期几)对应的日期。

案例代码:

代码语言:javascript
复制
 select next_day(to_date('2018-11-12','yyyy-mm-dd'),'星期四') from dual;

结果:

返回指定日期中特定部分的函数

EXTRACT(time)函数

返回指定time时间当中的年、月、日、分等日期部分。

案例代码:

代码语言:javascript
复制
select extract(year from timestamp '2018-11-12 15:36:01') as year,
       extract(month from timestamp '2018-11-12 15:36:01') as month,
       extract(day from timestamp '2018-11-12 15:36:01') as day,
       extract(minute from timestamp '2018-11-12 15:36:01') as minute,
       extract(second from timestamp '2018-11-12 15:36:01') as second
  from dual;

结果:

返回两个日期间的月份数:

MONTHS_BETWEEN(r1,r2)函数

该函数返回r1日期和r2日期直接的月份。当r1>r2时,返回的是正数,假如r1和r2是不同月的同一天,则返回的是整数,否则返回的小数。当r1<r2时,返回的是负数。

案例代码:

代码语言:javascript
复制
select months_between(to_date('2018-11-12', 'yyyy-mm-dd'),
                      to_date('2017-11-12', 'yyyy-mm-dd')) as zs, --整数
       months_between(to_date('2018-11-12', 'yyyy-mm-dd'),
                      to_date('2017-10-11', 'yyyy-mm-dd')) as xs, --小数
       months_between(to_date('2017-11-12', 'yyyy-mm-dd'),
                      to_date('2018-10-12', 'yyyy-mm-dd')) as fs --负数
  from dual;

结果:

日期截取函数

ROUND(r[,f])函数

将日期r按f的格式进行四舍五入。如果f不填,则四舍五入到最近的一天。

案例代码:

代码语言:javascript
复制
select sysdate, --当前时间
       round(sysdate, 'yyyy') as year, --按年
       round(sysdate, 'mm') as month, --按月
       round(sysdate, 'dd') as day, --按天
       round(sysdate) as mr_day, --默认不填按天
       round(sysdate, 'hh24') as hour --按小时
  from dual;

结果:

TRUNC(r[,f])函数

将日期r按f的格式进行截取。如果f不填,则截取到当前的日期。

案例代码:

代码语言:javascript
复制
select sysdate, --当前时间
       trunc(sysdate, 'yyyy') as year, --按年
       trunc(sysdate, 'mm') as month, --按月
       trunc(sysdate, 'dd') as day, --按天
       trunc(sysdate) as mr_day, --默认不填按天
       trunc(sysdate, 'hh24') as hour --按小时
  from dual;

结果:

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160726.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统日期、时间函数
    • SYSDATE函数
      • SYSTIMESTAMP函数
      • 数据库时区函数
        • DBTIMEZONE函数
          • ADD_MONTHS(r,n)函数
          • 月份最后一天函数
            • LAST_DAY(r)函数
              • NEXT_DAY(r,c)函数
              • 返回指定日期中特定部分的函数
                • EXTRACT(time)函数
                  • MONTHS_BETWEEN(r1,r2)函数
                  • 日期截取函数
                    • ROUND(r[,f])函数
                      • TRUNC(r[,f])函数
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档