43.Oracle数据库SQL开发之 日期和时间的存储与处理——使用时间值函数

148 阅读2分钟

43.Oracle数据库SQL开发之 日期和时间的存储与处理——使用时间值函数

欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…\

时间值函数用于获取或处理时间值和时间戳。

1.  ADD_MONTHS函数

ADD_MONTHS(x,y)用于计算x加上y个月的结果。如果y是负数,就从x中减去y个月。

执行如下:

store@PDB1>select add_months('01-jan-2007',13) from dual;

ADD_MONTH

---------

01-FEB-08

store@PDB1>select add_months('01-jan-2008',-13) from dual;

 

ADD_MONTH

---------

01-DEC-06

ADD_MONTHS函数可以用于时间和日期,例如:

store@PDB1>select add_months(to_date('01-jan-2007 19:15:26','dd-mon-yyyy hh24:mi:ss'),2)from dual;

 

ADD_MONTH

---------

01-MAR-07

2.  LAST_DAY函数

LAST_DAY函数用于计算包含x的月的最后一天。

显示2008年1月的最后一天:

store@PDB1>select last_day('01-jan-2008') from dual;

 

LAST_DAY(

---------

31-JAN-08

3.  MONTHS_BETWEEN函数

MONTHS_BETWEEN(x,y)用于计算x和y之间有几个月。如果x在日历中比y早,那么返回一个负数。

store@PDB1>select months_between('25-may-2008','15-jan-2008') from dual;

 

MONTHS_BETWEEN('25-MAY-2008','15-JAN-2008')

-------------------------------------------

                                      4.32258065

store@PDB1>select months_between('15-jan-2008','25-may-2008') from dual;

 

MONTHS_BETWEEN('15-JAN-2008','25-MAY-2008')

-------------------------------------------

                                      -4.3225806

4.  NEXT_DAY函数

NEXT_DAY(x,day)用于计算从x开始,下一个day的日期;参数day是一个文本字符串。

执行如下:

store@PDB1>select next_day('01-jan-2008','saturday') from dual;

 

NEXT_DAY(

---------

05-JAN-08

5.  ROUND函数

ROUND(x [, unit]) 用于对x取整。默认,x 取整为最近的一天。

store@PDB1>select round(to_date('25-oct-2008') ,'yyyy') from dual;

 

ROUND(TO_

---------

01-JAN-09

取整最近一月的

store@PDB1>select round(to_date('25-may-2008'),'mm') from dual;

 

ROUND(TO_

---------

01-JUN-08

取整为最近的小时,如下:

store@PDB1>select to_char(round(to_date('25-may-2008 19:45:26','dd-mon-yyyyhh24:mi:ss'),'HH24'),'DD-MON-YYYY HH24:MI:SS') from dual;

 

TO_CHAR(ROUND(TO_DAT

--------------------

25-MAY-2008 20:00:00

6.  SYSDATE

SYSDATE返回数据库服务器的操作系统中设置的当前时间值。

store@PDB1>select sysdate from dual;

SYSDATE

---------

08-NOV-15

7.  TRUNC函数

TRUNC(x [,unit])用于对x截断。默认,x被截断为当天的开始时间。Unit是一个可选字符串参数,指明要截断的单元。MM表示该月第一天。

执行如下,截断为当年的第一天:

store@PDB1>select trunc(to_date('25-may-2008'),'yyyy') from dual;

 

TRUNC(TO_

---------

01-JAN-08

store@PDB1>select trunc(to_date('25-may-2008'),'mm') from dual;

 

TRUNC(TO_

---------

01-MAY-08

阶段为小时,如下:

store@PDB1>select to_char(trunc(to_date('25-may-2008 19:45:26','dd-mon-yyyyhh24:mi:ss'),'hh24'),'dd-mon-yyyy hh24:mi:ss') from dual;

 

TO_CHAR(TRUNC(TO_DAT

--------------------

25-may-2008 19:00:00