Oracle日期函数简介(sysdate、trunc、LAST_DAY等)
Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。
(1)SYSDATE
sysdate取Oracle服务器系统的日期与时间;
语句:
select sysdate from dual;
结果:
Oracle系统中用SYSDATE取得的不仅包含日期而且还包含有时间信息。
(2)SYSTIMESTAMP
通过它返回系统时间,该时间包含时区信息,并且精确到微秒。返回的数据的类型为带时区信息的TIMESTAMP类型。
语句:
select SYSTIMESTAMP from dual;
结果:
(3)DBTIMEZONE和SESSIONTIMEZONE
DBTIMEZONE函数了解即可,获取数据库时区;SECCIONTIMEZONE函数获取当前电脑时区;
语句:
SELECT DBTIMEZONE FROM DUAL; SELECT SESSIONTIMEZONE FROM DUAL;
结果:
(4)ADD_MONTHS(date,integer)
该函数将返回在指定的日期上加一个月份数后的日期。其参数的具体含义如下:date:指定的日期。integer:要加的月份数,该值如果为负数,则表示要减去的月份数。
语句:
--指定日期两月后的日期 select add_months(sysdate,2) from dual; --指定日期两月前的日期 select add_months(sysdate,-2) from dual;
结果:
增加两个月
减去两个月
(5)LAST_DAY(date)
返回包含给定日期的那个月的最后一天。
语句:
select last_day(sysdate) from dual;
结果:
(6)NEXT_DAY(date,char)
该函数返回当前日期向后的一周char所对应的日期,char表示的是星期几,全称和缩写都可以,但必须有效,例如:1、星期一等;
语句:
select next_day(sysdate,7) from dual; select next_day(sysdate,'星期日') from dual;
结果:
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;
结果:
(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;
结果:
注意:涉及提取时分秒的,需要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;
结果:
(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;
结果:
拓展:
(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;
结果:
(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;
结果:
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;
结果: