oracle笔记(十一)日期时间函数.doc

日期时间函数

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类型转换成字符类型数据

 

你可能感兴趣的:(oracle,sql)