当前位置:首页 > 技能相关 > ORACLE > 正文内容

Oracle日期函数简介(sysdate、trunc、LAST_DAY等)

admin3年前 (2022-10-26)ORACLE6630 修订时间:2023-06-20 09:49:44

Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。

(1)SYSDATE

sysdate取Oracle服务器系统的日期与时间;

语句:

select sysdate from dual;

结果:

image.png

Oracle系统中用SYSDATE取得的不仅包含日期而且还包含有时间信息。

(2)SYSTIMESTAMP

通过它返回系统时间,该时间包含时区信息,并且精确到微秒。返回的数据的类型为带时区信息的TIMESTAMP类型。

语句:

select SYSTIMESTAMP from dual;

结果:

image.png

(3)DBTIMEZONE和SESSIONTIMEZONE

DBTIMEZONE函数了解即可,获取数据库时区;SECCIONTIMEZONE函数获取当前电脑时区;

语句:

SELECT DBTIMEZONE FROM DUAL;
SELECT SESSIONTIMEZONE FROM DUAL;

结果:

image.png

image.png

(4)ADD_MONTHS(date,integer)

该函数将返回在指定的日期上加一个月份数后的日期。其参数的具体含义如下:date:指定的日期。integer:要加的月份数,该值如果为负数,则表示要减去的月份数。

语句:


--指定日期两月后的日期
select add_months(sysdate,2) from dual;
--指定日期两月前的日期
select add_months(sysdate,-2) from dual;

结果:

增加两个月

image.png

减去两个月

image.png

(5)LAST_DAY(date)

返回包含给定日期的那个月的最后一天。

语句:

select last_day(sysdate) from dual;

结果:

image.png

(6)NEXT_DAY(date,char)

该函数返回当前日期向后的一周char所对应的日期,char表示的是星期几,全称和缩写都可以,但必须有效,例如:1、星期一等;

语句:

select next_day(sysdate,7) from dual;
select next_day(sysdate,'星期日') from dual;

结果:

image.png

image.png

char可以用1~7表示,请注意,1表示星期日,2代表星期一,往下类推;

(7)CURRENT_DATE(date,'yyyy-mm-dd hh24:mi:ss')

该函数将得到会话时区的当前日期。

语句:

SELECT SESSIONTIMEZONE, TO_CHAR(CURRENT_DATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

结果:

image.png

(8)EXTRACT(datetime)

该函数可以从指定的时间当中提取指定的日期部分,例如从给定的日期得到年、月、分等数据。

语句:

SELECT 
EXTRACT(YEAR FROM SYSDATE ) as 年,
EXTRACT(month FROM SYSDATE ) as 月,
EXTRACT(DAY FROM SYSDATE ) as 日,
EXTRACT(HOUR FROM TIMESTAMP '2022-11-02 10:10:10') as 小时,
EXTRACT(MINUTE FROM TIMESTAMP '2022-11-02 11:11:11') as 分钟,
EXTRACT(SECOND FROM TIMESTAMP '2022-11-02 11:11:12') as 秒
FROM DUAL;

结果:

image.png

注意:涉及提取时分秒的,需要TIMESTAMP关键字,并且时间需要用单引号括起来,不能是sysdate;

(9)MONTHS_BETWEEN(date1,date2)

返回两个日期间的月份

语句:

select months_between(TO_DATE('2024/10/31', 'YYYY/MM/DD'),  -- 这里放较晚日期时间
                      TO_DATE('2022/10/26', 'YYYY/MM/DD'))  -- 这里放较早日期时间
from dual;

结果:

image.png

(10)NEW_TIME(date,timezone1,timezone2)

该函数将返回时间date在时区timezone1转换到时区timezone2的时间。

语句:

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') ONE,
TO_CHAR(NEW_TIME(SYSDATE,'PDT','EST'),'YYYY-MM-DD HH24:MI:SS') TWO 
FROM DUAL;

结果:

image.png

拓展:

(11)ROUND(date[,fmt])

将date舍入到fmt指定的形式。如果参数fmt被省略,则date将被处理到最近的一天

语句:

SELECT TO_CHAR(ROUND(TO_DATE('2022-11-02 21:00:00', 'YYYY-MM-DD HH24:MI:SS')), 'YYYY- MM - DD HH24 :MI :SS ') 
FROM DUAL;

结果:

image.png

(12)TRUNC(date[,fmt])

语句:

SELECT TO_CHAR(TRUNC(TO_DATE('2022-11-02 09:00:00', 'YYYY-MM-DD HH24:MI:SS')),'YYYY-MM-DD HH24:MI:SS')
  FROM DUAL;

结果:

image.png

TRUNC 会截取日期部分信息;

(13)INTERVAL int DAY、INTERVAL int MONTH、INTERVAL int YEAR

语句:

select SYSDATE,SYSDATE-INTERVAL '3' DAY,SYSDATE-INTERVAL '3' MONTH,SYSDATE-INTERVAL '3' YEAR from dual;

结果:

2345截图20230620094848.jpg

 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。

扫描二维码推送至手机访问。

版权声明:本文由LIFEI - blog发布,如需转载请注明出处。

本文链接:http://www.lifeiai.com/?id=241

标签: oracle基础
分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。