zoukankan      html  css  js  c++  java
  • Oracle中与日期时间有关的运算函数

    1            ADD_MONTHS

    格式:ADD_MONTHS(D,N)

    说明:返回日期时间D加N月后对应的日期时间。N为正时则表示D之后;N为负时则表示为D之前;N为小数则会自动先删除小数部分,而用整数部分

    举例:

    SQL>SELECT ADD_MONTHS(SYSDATE,7) A,ADD_MONTHS(SYSDATE,-7) B,ADD_MONTHS(SYSDATE,7.9)C FROM DUAL;

    A                            B                            C

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

    2015/1/2016:07:02 2013/11/20 16:07:02 2015/1/20 16:07:02

    2            CURRENT_DATE

    格式:CURRENT_DATE

    说明:返回当前会话时区所对应的日期

    举例:SQL> SELECTCURRENT_DATE A FROM DUAL;

    A

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

    2014/6/2016:09:04

     

    3            CURRENT_TIMESTAMP

    格式:CURRENT_TIMESTAMP([P])

    说明:返回当前会话时区所对应的日期时间时间戳。P为精度,可以是O—9之间的一个整数,默认为6

    举例:

    SQL>SELECT CURRENT_TIMESTAMP A,CURRENT_TIMESTAMP(9) B FROM DUAL;

    A                                      B

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

    20-6月-14 04.12.33.402000下午 +08:00  20-6月 -1404.12.33.402000000下午 +08:00

     

    4            DBTIMEZONE

    格式:DBTIMEZONE

    说明:返回数据库时区

    举例:

    SQL>SELECT DBTIMEZONE A FROM DUAL;

    A

    ------

    +00:00

    5            EXTRACT

    格式:EXTRACT(C,FROM D)

    说明:返回日期时间D中指定的部分C。C的取值为YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,TIMEZONE_HOUR,TIMEZONE_MINUTE, TIMEZONE_REGION, TIMEZONE_ABBR。指定的C必须在D中存在

    举例:

    抽取年月日

    SQL>SELECT EXTRACT(YEAR FROM SYSDATE) A,EXTRACT(MONTH FROM SYSDATE) B,EXTRACT(DAYFROM SYSDATE) C FROM DUAL;

            A          B          C

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

         2014          6         20

    抽取时分秒不能从SYSDATE中抽取,SYSTIMESTAMP返回的UTC标准时间

    SQL>SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) A,EXTRACT(MINUTE FROM SYSTIMESTAMP)B,EXTRACT(SECOND FROM SYSTIMESTAMP) C FROM DUAL;

            A          B          C

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

            8         26    50.052

    6            LAST_DAY

    格式:LAST_DAY(D)

    说明:返回日期D所在月份的最后一天

    举例:

    SQL>SELECT LAST_DAY(SYSDATE) A FROM DUAL;

    A

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

    2014/6/3016:40:08

    7            LOCALTIMESTAMP

    格式:LOCALTIMESTAMP([p])

    说明:返回当前会话时区的日期时间。P为精度,可以是0-9之间的一个整数,默认为6。与CURRENT_TIMESTAMP在返回值的数据类型上有区别

    举例:

    SQL>SELECT LOCALTIMESTAMP(4) A FROM DUAL;

    A

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

    20-6月-14 04.42.09.2800下午

    8            MONTHS_BETWEEN

    格式:MONTHS_BETWEEN(D1,D2)

    说明:返回日期D1和D2之间相差的月数。如果D1小于D2,则返回负数:如果D1和D2的天数相同或都是月底,则返回整数;或者Oracle以每月31天为准计算结果的小数部分

    举例:

    SQL>SELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('2013-12-31','YYYY-MM-dd'))A,MONTHS_BETWEEN(SYSDATE,TO_DATE('2015-12-1','YYYY-MM-dd')) A FROM DUAL;

            A          A

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

    5.66771318-17.364544

    9            NEXT_DAY

    格式:NEXT_DAY(D,C)

    说明:返回日期D后的下一个C。C是一个字符串,表示用当前会话语言表示的一周中某一天的全称(如星期一、星期二等),也可以是数值。

    举例:SQL> SELECTNEXT_DAY(SYSDATE,3) A, NEXT_DAY(SYSDATE,'星期一') B FROM DUAL;

    A                        B

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

    2014/6/2416:48:562014/6/23 16:48:56

    10       ROUND

    格式:ROUND(date,fmt)

    说明:日期的四舍五入。

    fmt为year或者YY,按**1-6月和7-12月**四舍五入到最近的几几年1月1日

    fmt为month或者MM,按**1-15日和16-30日**四舍五入到最近的几月1日

    fmt为day,按**周一到周三和周四到周日**四舍五入到最近的周日

    fmt为DD,如果小时超过12,向前进1

    fmt为HH,如果分超过30,向前进1

    fmt为分MI,到分,秒数30是分界线,相当于四舍五入的5,如果秒超过30,向前进1

    fmt为秒SS,精确到秒

    举例:

    SQL>SELECT ROUND(TO_DATE('2013-11-24 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YY') AFROM DUAL;

    A

    -----------

    2014/1/1

     

    SQL>SELECT ROUND(TO_DATE('2013-11-24 10:31:11','YYYY-MM-DD HH24:MI:SS'),'MM') AFROM DUAL;

    A

    -----------

    2013/12/1

     

    SQL>SELECT ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'Day')A,ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'DD') B FROMDUAL;

    A          B

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

    2013/11/24 2013/11/25

     

    SQL>SELECT ROUND(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'HH') A,ROUND(TO_DATE('2013-11-2510:31:11','YYYY-MM-DD HH24:MI:SS'),'MI') B FROM DUAL;

    A                              B

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

    2013/11/2511:00:00 2013/11/25 10:31:00

    11       SESSIONTIMEZONE

    格式:SESSIONTIMEZONE

    说明:返回当前会话的时区

    举例:

    SQL>SELECT SESSIONTIMEZONE A FROM DUAL;

    A

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

    +08:00

     

    12       SYS_EXTRACT_UTC

    格式:SYS_EXTRACT_UTC(datetime_wuth_timezone)

    说明:返回UTC时间

    举例:

    SQL>SELECT SYS_EXTRACT_UTC(SYSTIMESTAMP) A FROM DUAL;

    A

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

    24-6月-14 03.05.09.136892上午

     

    13       SYSDATE

    格式:SYSDATE

    说明:返回当前时间,数据库驻留的操作系统时间

    举例:

    SQL>SELECT SYSDATE A  FROM DUAL;

    A

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

    2014/6/2411:06:24

    14       SYSTIMESTAMP

    格式:SYSTIMESTAMP

    说明:返回系统时间,包含时区信息,带微秒

    举例:

    SQL>SELECT SYSTIMESTAMP A FROM DUAL;

    A

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

    24-6月-14 11.09.50.997760上午 +08:00

    15       TRUNC

    格式:TRUNC(d[,fmt])

    说明:截断日期,只有d一个参数时,返回日期时间。

    fmt为yyyy或者yy时,返回当年第一天

    fmt为mm时,返回当月第一天

    fmt为dd时,返回当前年月日

    fmt为d时,返回当前星期的第一天

    fmt为hh时,截取到当前的小时

    fmt为mi时,截取到当前的分钟

    举例:

    SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS')) A FROM DUAL;

    A

    -----------

    2013/11/25

     

    SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YYYY')A,TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'YY') B  FROM DUAL;

    A          B

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

    2013/1/1   2013/1/1

     

    SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'MM')A,TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'DD') B  FROM DUAL;

    A          B

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

    2013/11/1  2013/11/25

     

    SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'D') A FROMDUAL;

    A

    -----------

    2013/11/24

     

    SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'HH') A,TRUNC(TO_DATE('2013-11-2510:31:11','YYYY-MM-DD HH24:MI:SS'),'MI') B FROM DUAL;

    A                  B

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

    2013/11/2510:00:00 2013/11/25 10:31:00

  • 相关阅读:
    实用小软件
    没有找到MSVCP71.dll,迅雷5无法进行离线下载,P2P Seacher无法连入emule网络
    PSP2000V3版5.03系统误删PSP文件夹的拯救方案
    图书馆图书检索的小技巧
    thinkpad指点杆(trackpoint)在WPS的word文档中失效的解决办法
    笔记本电池死而复生
    调试Page.IsPostBack,感觉好奇怪
    OleDbSchemaGuid.Columns返回DataTable介绍
    静态类生命周期的问题
    IE中居中,FF中出问题
  • 原文地址:https://www.cnblogs.com/haw2106/p/6762830.html
Copyright © 2011-2022 走看看