ITPub博客

首页 > 数据库 > Oracle > Oracle   SQL函数(七)

Oracle   SQL函数(七)

Oracle 作者:maolihui8525 时间:2013-12-07 21:31:17 0 删除 编辑

三 时间战日期函数

时间值函数用于获得或处置奖办时间值战时间戳。表3-1给出了一些时间值函数,其中x暗示一个时间值或时间戳。

表3-1 时间值函数

函    数

道    明

ADD_MONTHS(x,y)

返回x加上一个月后的的成效。若是y是背数,便从x中心往y个月

LAST_DAY(x)

返回包含x的月的最后一天

MONTHS_BETWEEN(x,y)

返回x战y之间有几个月。若是x在日历中比y晚,则返回值为正数,不然为背数

NEXT_DAY(x,day)

返回从x开初,下一个day隐现的时间;day是一个文本字符串,譬喻SATURDAY

 

 

ROUND(x[,unit])

对x取整。默许景遇下,x取整为近来的 。unit是一个可选字符串参数,它指明要取整的单位。譬喻,YYYY暗示将x取整为近来一年的第一天

SYSDATE

返回数据库办事器地点的操做体系设置确当前时间

TRUNC(x[,unit])

对x截断。默许景遇下,x被截断为当天的开初时间。Unit是一个可选字符串参数,它指名要截断的单位。譬喻,MM暗示将x截断为该月的第一天

3.1  ADD_MONTHS函数

ADD_MONTHS(x, y)用于计算x加上y个月的成效。若是y是背数,便从x中减往y个月。下里这个例子在2007年1月1日上加上13个月:

 SELECT ADD_MONTHS("01-JAN-2007", 13)

FROM dual;

ADD_MONTH
---------
01-FEB-08

下里这个例子从2008年1月1日中减往13个月;注意本例现实上是利用ADD_MONTHS 函数在这个日期上加上-13个月:

 SELECT ADD_MONTHS("01-JAN-2008", -13)
FROM dual;

ADD_MONTH
---------
01-DEC-06

ADD_MONTHS函数可以用于时间战日期。譬喻,下里这个查询在时间值2007年1月1日下昼7面15分26秒上促进两个月:

 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

下里这个查询重写了上里这个例子:它利用TO_CHAR函数将从ADD_MONTHS函数中返回的时间值转换为字符串,并指定格式为DD-MON-YYYY HH24:MI:SS:

 SELECT TO_CHAR(ADD_MONTHS(TO_DATE("01-JAN-2007 19:15:26",
"DD-MON-YYYY HH24:MI:SS"), 2), "DD-MON-YYYY HH24:MI:SS")
FROM dual;

TO_CHAR(ADD_MONTHS(T
--------------------
01-MAR-2007 19:15:26

注意:

表5-6中列出的一切函数皆既可以用于时间,又可以用于日期

3.2  LAST_DAY函数

LAST_DAY函数用于计算包含x的月的最后一天。下里这个例子隐示了2008年1月的最后一天:

 SELECT LAST_DAY("01-JAN-2008")
FROM dual;

LAST_DAY(
---------
31-JAN-08

3.3  MONTHS_BETWEEN函数

MONTHS_BETWEEN (x, y)用于计算x战y之间有几个月。若是x在日历中比y早,那么MONTHS_BETWEEN()便返回一个背数。

注意:

在挪用MONTHS_BETWEEN函数时,日期的挨次十分重要:若是念让成效为正数,稍晚的时间必需呈而今前里。

下里这个例子隐示了2013年5月25日战2013年1月15日之间相差的月数。注意由于第一个参数是稍后的日期(2013年5月25日),果此所返回的成效是正数:

 SELECT MONTHS_BETWEEN("25-MAY-2013", "15-JAN-2013")
     FROM dual;

MONTHS_BETWEEN("25-MAY-2013","15-JAN-2013")
-------------------------------------------
4.32258065

下里这个例子挪用MONTHS_BETWEEN函数时利用沟通的日期,然则颠倒了这两个参数的挨次,果此返回值为背数:

 SELECT MONTHS_BETWEEN("15-JAN-2013", "25-MAY-2013")
FROM dual;

MONTHS_BETWEEN("15-JAN-2013","25-MAY-2013")
-------------------------------------------
-4.3225806

3.4  NEXT_DAY函数

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

下里这个例子隐示了2013年1月1日以后的下一个星期六的日期:

 SELECT NEXT_DAY("01-JAN-2013", "SATURDAY")
FROM dual;

NEXT_DAY(
---------
05-JAN-13

3.5  ROUND函数

ROUND(x [, unit])用于对x取整。默许景遇下,x取整为近来的一天。unit是一个可选字符串参数,它指明要取整的单位。譬喻,YYYY暗示将x取整为近来一年的第一天。

下里这个例子利用ROUND函数对2008年10月25日取整,取整为近来一年的第一天,果此成效是2009年1月1日。注意本例中指定的日期是25-OCT-2008,并对它利用一个TO_DATE函数进止了转换:

 SELECT ROUND(TO_DATE("25-OCT-2008"), "YYYY")
FROM dual;

ROUND(TO_
---------
01-JAN-09

下里这个例子利用ROUND函数对2008年5月25日取整,取整为近来一月的第一天,最末成效是2008年6月1日,果为5月25日距6月1日比距5月1日近良多:

 SELECT ROUND(TO_DATE("25-MAY-2008"), "MM")
FROM dual;

ROUND(TO_
---------
01-JUN-08

下里这个例子对2008年5月25日清晨7面45分26秒取整,取整为近来的小时,果此是清晨8面整:

 SELECT  TO_CHAR(ROUND(TO_DATE("25-MAY-2008 19:45:26",
"DD-MON-YYYY HH24:MI:SS"), "HH24"), "DD-MON-YYYY HH24:MI:SS")
FROM dual;

TO_CHAR(ROUND(TO_DAT
--------------------
25-MAY-2008 20:00:00

3.6  SYSDATE

SYSDATE返回数据库办事器的操做体系中设置确当前时间值。下里这个例子获得当前日期:

 SELECT SYSDATE
FROM dual;

SYSDATE
---------
05-NOV-13

3.7  TRUNC函数

TRUNC(x [, unit])用于对x截断。默许景遇下,x被截断为当天的开初时间。unit是一个可选字符串参数,它指明要截断的单位。譬喻,MM暗示截断为该月的第一天。

下里这个例子利用TRUNC函数对2008年5月25日进止截断,截断为昔时的第一天,果此成效是2008年1月1日:

 SELECT TRUNC(TO_DATE("25-MAY-2008"), "YYYY")
FROM dual;

TRUNC(TO_
---------
01-JAN-08

下里这个例子对2008年5月25日进止截断,截断为当月的第一天,最末成效是2008年5月1日:

 SELECT TRUNC(TO_DATE("25-MAY-2008"), "MM")
FROM dual;

TRUNC(TO_
---------
01-MAY-08

下里这个例子对2008年5月25日清晨7面45分26秒进止截断,截断为小时,果此是清晨7面整:

 SELECT TO_CHAR(TRUNC(TO_DATE("25-MAY-2008 19:45:26",
"DD-MON-YYYY HH24:MI:SS"), "HH24"), "DD-MON-YYYY HH24:MI:SS")
FROM dual;

TO_CHAR(TRUNC(TO_DAT
--------------------
25-MAY-2008 19:00:00

 


<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22557739/viewspace-1115186/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-18