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類型轉換成字符類型數據

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章