zoukankan      html  css  js  c++  java
  • oracle常用函数(2)

    1) trunc函数,用于截断数字,

    截断数字,用法为:trunc(n1,n2),n1表示要被截断的数字,n2表示要截断到那位,但是不会进行四舍五入。

    n2还可以表示负数,表示截断到小数点前,意思就是小数点后面的都不要了,最后结果是以0结尾的整数。

    当trunc(n1,n2)当n2为负数时,-1表示个位为0,-2表示个位和十位都为0,后面一次类推。
    SQL> select trunc(13.1) from dual;

    TRUNC(13.1)
    -----------
    13

    SQL> select trunc(13.23,2)from dual;

    TRUNC(13.23,2)
    --------------
    13.23

    SQL> select trunc(13.23,1)from dual;

    TRUNC(13.23,1)
    --------------
    13.2

    SQL> select trunc(13.23432,3)from dual;

    TRUNC(13.23432,3)
    -----------------
    13.234

    SQL> select trunc(13.2,-1)from dual;

    TRUNC(13.2,-1)
    --------------
    10

    SQL> select trunc(119.2,-1)from dual;

    TRUNC(119.2,-1)
    ---------------
    110

    SQL> select trunc(120.2,-1)from dual;

    TRUNC(120.2,-1)
    ---------------
    120

    SQL> select trunc(120.2,-2)from dual;

    TRUNC(120.2,-2)
    ---------------
    100

    SQL> select trunc(1220.11,-3)from dual;

    TRUNC(1220.11,-3)
    -----------------
    1000

    SQL> select trunc(12230.11,-4)from dual;

    TRUNC(12230.11,-4)
    ------------------
    10000

    2)trunc用于截断日期

    SQL> select trunc(sysdate)from dual;//返回当前日期

    TRUNC(SYSDATE)
    --------------
    2019/05/21

    SQL> select trunc(sysdate,'mm')from dual;//返回当前月份的第一天

    TRUNC(SYSDATE,'MM')
    -------------------
    2019/05/01

    SQL> select trunc(sysdate,'yyyy')from dual;//返回当前年份的第一天

    TRUNC(SYSDATE,'YYYY')
    ---------------------
    2019/01/01


    SQL> select trunc(sysdate,'dd')from dual;//返回当前日期

    TRUNC(SYSDATE,'DD')
    -------------------
    2019/05/21


    SQL> select trunc(sysdate,'d')from dual;//返回当前星期的第一天(为星期天,工作的第一天为星期一)

    TRUNC(SYSDATE,'D')
    ------------------
    2019/05/19


    SQL> select trunc(sysdate,'hh')from dual;//返回当前小时

    TRUNC(SYSDATE,'HH')
    -------------------
    2019/05/21 15:00:00

    SQL> select trunc(sysdate,'mi')from dual;//返回当前时间的分钟,没有秒的精确,只有毫秒。

    TRUNC(SYSDATE,'MI')
    -------------------
    2019/05/21 15:20:00

    3)add_months(时间,数字)表示可以得到某一时间之前或之后n个月的时间;

    SQL> select add_months(sysdate,1)from dual;//获取当前时间一个月之后的时间

    ADD_MONTHS(SYSDATE,1)
    ---------------------
    2019/06/21 15:37:02

    SQL> select add_months(sysdate,6)from dual;//获取到当前时间半年之后的时间

    ADD_MONTHS(SYSDATE,6)
    ---------------------
    2019/11/21 15:37:20

    4)months_between函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。 

    MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月。如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数。
    当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示。
    months_between(date1, date2),必须注意的是,date1与date2都为Date类型,不然会出现错误。须用to_date(‘’,'') 来转换为日期格式,才能参加计算。

    SQL> select months_between(sysdate,'10-5月-20')from dual;

    MONTHS_BETWEEN(SYSDATE,'10-5月-20')
    ----------------------------------
    -11.6239557198327

    select months_between('10-5月-20',sysdate)from dual;

    MONTHS_BETWEEN('10-5月-20',SYSDATE)
    ----------------------------------
    11.6239329450418

    SQL> select months_between('21-5月-20',sysdate)from dual;

    MONTHS_BETWEEN('21-5月-20',SYSDATE)
    ----------------------------------
    12

  • 相关阅读:
    bzoj 3040: 最短路(road)
    bzoj 2049: [Sdoi2008]Cave 洞穴勘测
    poj 2505 A multiplication game
    hdu 1729 Stone Game
    经典博弈模型
    hdu 1848 Fibonacci again and again(SG函数)
    hdu 2147 kiki's game(巴什博弈)
    hdu 1847 Good Luck in CET-4 Everybody!(巴什博弈)
    hdu 4388 Stone Game II
    poj 2234 Matches Game
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10900238.html
Copyright © 2011-2022 走看看