日期时间函数

    技术2022-05-20  32

    日期时间函数

    Oracle 中的日期型数据实际含有两个值: 日期和时间。默认的日期格式是 DD-MON-RR.日期时间函数用来返回当前系统的日期和时间、以及对日期和时间类型的数据进行处理运算。

    add_months(date,count);在指定的日期上增加count个月

    last_day(date);返回日期date所在月的最后一天

    months_between(date1,dates);返回date1date2之间间隔多少个月

    new_time(date,this,other);将时间datethis时区转换成other时区

    next_day(day,day);返回指定日期或最后一的第一个星期几的日期,这里day为星期几

    sysdate();获取系统的当前日期

    current_timestamp();获取当前的时间和日期值

    round:日期的四舍五入

    trunc 日期的截取

    日期的数学运算:

    l        在日期上加上或减去一个数字结果仍为日期。

    l        两个日期相减返回日期之间相差的天数

    l        可以用数字除24来向日期中加上或减去小时。

    //获取系统的当前时间 显示的格式采用默认格式 显示结果:07-4 -11 11.15.38.390000 上午 +08:00

    SQL> select current_timestamp from dual;

    //获取系统的当前日期值  显示结果:2011-4-7 11

    SQL> select sysdate from dual;

    //为当前日期加上3个月 显示的结果:2011-7-7 11:18:36

    select add_months(sysdate,3) from dual;

    //返回当前月的最后一天 显示的结果:2011-4-30 11:19:4

    select last_day(sysdate) from dual;

    //返回两个日期之间的间隔月是几: 结果为:4

    SQL> select months_between(add_months(sysdate,4),sysdate) from dual;

    //GMT时区转换成AST时区的日期结果

     SQL> select new_time(sysdate,'GMT','AST') from dual;

    //返回下一个星期一的日期值   必须写成星期

     SQL> select next_day(sysdate,'星期一') from dual;

    SQL> select sysdate,round(sysdate,'yyyy') from dual;

    SYSDATE     ROUND(SYSDATE,'YYYY')

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

    2011-4-9 22 2011-1-1

    SQL> select sysdate,round(sysdate,'mm') from dual;

    SYSDATE     ROUND(SYSDATE,'MM')

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

    2011-4-9 22 2011-4-1

    SQL> select sysdate,round(sysdate,'dd') from dual;

    SYSDATE     ROUND(SYSDATE,'DD')

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

    2011-4-9 22 2011-4-10

     SQL> select sysdate,trunc(sysdate,'dd') from dual;

    SYSDATE     TRUNC(SYSDATE,'DD')

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

    2011-4-9 22 2011-4-9

    SQL> select sysdate,trunc(sysdate,'yyyy') from dual;

    SYSDATE     TRUNC(SYSDATE,'YYYY')

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

    2011-4-9 22 2011-1-1

    SQL> select sysdate,trunc(to_char(sysdate,'yyyy')) from dual;

    SYSDATE     TRUNC(TO_CHAR(SYSDATE,'YYYY'))

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

    2011-4-9 22                           2011

    SQL> select sysdate,trunc(to_char(sysdate,'dd')) from dual;

    SYSDATE     TRUNC(TO_CHAR(SYSDATE,'DD'))

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

    2011-4-9 22                            9

    SQL> select sysdate,trunc(to_char(sysdate,'mm')) from dual;

    SYSDATE     TRUNC(TO_CHAR(SYSDATE,'MM'))

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

    2011-4-9 22                            4

    转换函数:

      隐式转换:在运算过程中由系统自动完成的

      显式转换:在运算过程中需要调用相应的转换函数实现。

    隐式转换

    数据类型

    目标数据类型

    VARCHAR2 or CHAR

    NUMBER

    VARCHAR2 or CHAR

    DATE

    NUMBER

    VARCHAR2

    DATE

    VARCHAR2

     

    显式转换

    to_char(date,format):按照指定的格式format把数字或日期类型的数据转换成字符串

     

    格式:

             必须包含在单引号中而且大小写敏感

              可以包含任意的有效的日期格式。

             日期之间用逗号隔开

       日期格式如下:

    YYYY

    2004

    YEAR

    TWO THOUSAND AND FOUR

    MM

    02

    MONTH

    JULY

    MON

    JUL

    DY

    MON

    DAY

    MONDAY

    DD

    02

     

    //把当前日期转换成YYYY/MM/DD的格式

    SQL> select to_char(current_timestamp,'YYYY/MM/DD') from dual;

    //把当前日期转换成YYYY/MM/DD HH24/MI/SS AM的格式

    SQL> select to_char(current_timestamp,'YYYY/MM/DD HH24/MI/SS AM') from dual;

    //DD of MONTH

    SQL> select to_char(current_timestamp,'YYYY DD "of" MONTH  HH/MI/SS AM') from dual;

    //把当数字按照$99,999这种方式返回字符串  并且操作数的位数不能够大于5($后边的位数),否则话结果会是########

    SQL> select to_char(11111,'$99,999') from dual;

    to_number(char);把包含了数字格式的字符串转换成数字数据

    to_date(string,format);按照指定格式的format把字符串转换成日期数据,如果省略了foramt格式,那么就采用默认的日期格式(DD-MON-YY);

    //把当前字符串转换成日期

    SQL> select to_date('2011-02-08','YYYY-MM-DD') from dual;

    //求出两个日期之间相差的天数

    SQL> select to_date('2011-07-15','YYYY-MM-DD')-to_date('2011-02-08','YYYY-MM-DD') from dual;

    //求出两个日期之间相差的周次

    SQL> select (to_date('2011-07-15','YYYY-MM-DD')-to_date('2011-02-08','YYYY-MM-DD'))/7 from dual;

    //对周次进行向上取整

    SQL> select ceil((to_date('2011-07-15','YYYY-MM-DD')-to_date('2011-02-08','YYYY-MM-DD'))/7) from dual;

    chartorowid(char);把字符串转换成rowid类型

    rowidtocharx;rowid类型转换成字符类型数据

     


    最新回复(0)