首页 > 数据库 > Oracle > Oracle SQL函数(七) Hacker
三
时间值函数用于获取或处理时间值和时间戳。表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取整为最近的 |
|
SYSDATE |
返回数据库服务器所在的操作系统设置的当前时间 |
|
TRUNC(x[,unit]) |
对x截断。默认情况下,x被截断为当天的开始时间。Unit是一个可选字符串参数,它指名要截断的单元。例如,MM表示将x截断为该月的第一天 |
3.1
ADD_MONTHS(x,
FROM
ADD_MONTH
---------
01-FEB-08
下面这个例子从2008年1月1日中减去13个月;注意本例实际上是使用ADD_MONTHS
FROM
ADD_MONTH
---------
01-DEC-06
ADD_MONTHS函数可以用于时间和日期。例如,下面这个查询在时间值2007年1月1日下午7点15分26秒上增加两个月:
ADD_MONTH
---------
01-MAR-07
下面这个查询重写了上面这个例子:它使用TO_CHAR函数将从ADD_MONTHS函数中返回的时间值转换为字符串,并指定格式为DD-MON-YYYY
'DD-MON-YYYY
FROM
TO_CHAR(ADD_MONTHS(T
--------------------
01-MAR-2007
|
注意: 表5-6中列出的所有函数都既可以用于时间,又可以用于日期 |
3.2
LAST_DAY函数用于计算包含x的月的最后一天。下面这个例子显示了2008年1月的最后一天:
FROM
LAST_DAY(
---------
31-JAN-08
3.3
MONTHS_BETWEEN
|
注意: 在调用MONTHS_BETWEEN函数时,日期的次序非常重要:如果想让结果为正数,稍晚的时间必须出现在前面。 |
下面这个例子显示了2013年5月25日和2013年1月15日之间相差的月数。注意由于第一个参数是稍后的日期(2013年5月25日),因此所返回的结果是正数:
MONTHS_BETWEEN('25-MAY-2013','15-JAN-2013')
-------------------------------------------
4.32258065
下面这个例子调用MONTHS_BETWEEN函数时使用相同的日期,但是颠倒了这两个参数的次序,因此返回值为负数:
FROM
MONTHS_BETWEEN('15-JAN-2013','25-MAY-2013')
-------------------------------------------
-4.3225806
3.4
NEXT_DAY(x,
下面这个例子显示了2013年1月1日之后的下一个星期六的日期:
FROM
NEXT_DAY(
---------
05-JAN-13
3.5
ROUND(x
下面这个例子使用ROUND函数对2008年10月25日取整,取整为最近一年的第一天,因此结果是2009年1月1日。注意本例中指定的日期是25-OCT-2008,并对它使用一个TO_DATE函数进行了转换:
FROM
ROUND(TO_
---------
01-JAN-09
下面这个例子使用ROUND函数对2008年5月25日取整,取整为最近一月的第一天,最终结果是2008年6月1日,因为5月25日距6月1日比距5月1日近得多:
FROM
ROUND(TO_
---------
01-JUN-08
下面这个例子对2008年5月25日晚上7点45分26秒取整,取整为最近的小时,因此是晚上8点整:
'DD-MON-YYYY
FROM
TO_CHAR(ROUND(TO_DAT
--------------------
25-MAY-2008
3.6
SYSDATE返回数据库服务器的操作系统中设置的当前时间值。下面这个例子获取当前日期:
FROM
SYSDATE
---------
05-NOV-13
3.7
TRUNC(x
下面这个例子使用TRUNC函数对2008年5月25日进行截断,截断为当年的第一天,因此结果是2008年1月1日:
FROM
TRUNC(TO_
---------
01-JAN-08
下面这个例子对2008年5月25日进行截断,截断为当月的第一天,最终结果是2008年5月1日:
FROM
TRUNC(TO_
---------
01-MAY-08
下面这个例子对2008年5月25日晚上7点45分26秒进行截断,截断为小时,因此是晚上7点整:
'DD-MON-YYYY
FROM
TO_CHAR(TRUNC(TO_DAT
--------------------
25-MAY-2008
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23399034/viewspace-1115214/ ,如需转载,请注明出处,否则将追究法律责任。