程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 在Oracle時間應用中如何轉換函數

在Oracle時間應用中如何轉換函數

編輯:Oracle數據庫基礎

本文主要介紹的是Oracle時間的實際應用中的轉換函數和date實際操作的相關關系,我們都知道轉換函數和date實際操作的相關關系最大的就是兩個可以轉換函數即,to_date(),to_char()

to_date() 作用將字符類型按一定格式轉化為日期類型。

具體用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者為字符串,後者為轉換日期格式,注意,前後兩者要以一對應。

如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 將得到具體的Oracle時間

多種日期格式:

YYYY:四位表示的年份

YYY,YY,Y:年份的最後三位、兩位或一位,缺省為當前世紀

MM:01~12的月份編號

MONTH:九個字符表示的月份,右邊用空格填補

MON:三位字符的月份縮寫

WW:一年中的星期

D:星期中的第幾天

DD:月份中的第幾天

DDD:年所中的第幾天

DAY:九個字符表示的天的全稱,右邊用空格補齊

HH,HH12:一天中的第幾個小時,12進制表示法

HH24:一天中的第幾個小時,取值為00~23

MI:一小時中的分鐘

SS:一分鐘中的秒

SSSS:從午夜開始過去的秒數

to_char():將日期轉按一定格式換成字符類型

  1. SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') time from dual;  
  2. TIME  
  3. 2004-10-08 15:22:58 

即把當前Oracle時間按yyyy-mm-dd hh24:mi:ss格式轉換成字符類型

在Oracle中處理日期大全

TO_DATE格式

  1. Day:   
  2. dd number 12   
  3. dy abbreviated fri   
  4. day spelled out friday   
  5. ddspth spelled out, ordinal twelfth   
  6. Month:   
  7. mm number 03   
  8. mon abbreviated mar   
  9. month spelled out march   
  10. Year:   
  11. yy two digits 98   
  12. yyyy four digits 1998 

24小時格式下時間范圍為: 0:00:00 - 23:59:59....

12小時格式下Oracle時間范圍為: 1:00:00 - 12:59:59 ....

[ZT]日期和??函???

1.

日期和字符轉換函數用法(to_date,to_char)

2.

  1. select to_char( to_date(222,''J''),''JSP'') from dual 

顯示Two Hundred Twenty-Two

3.

求某天是星期幾

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),''day'') from dual;  

星期一

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
    ''day'',''NLS_DATE_LANGUAGE = American'') from dual;   
  2. monday  

設置日期語言

  1. ALTER SESSION SET NLS_DATE_LANGUAGE=''AMERICAN'';  

也可以這樣

  1. TO_DATE (''2002-08-26'', ''YYYY-mm-dd'', ''NLS_DATE_LANGUAGE = American''

4.

兩個日期間的天數

  1. select floor(sysdate - to_date(''20020405'',''yyyymmdd'')) from dual; 

5. 時間為null的用法

  1. select id, active_date from table1   
  2. UNION   
  3. select 1, TO_DATE(null) from dual; 

注意要用TO_DATE(null)

6.

  1. a_date between to_date(''20011201'',''yyyymmdd'') 
  2. and to_date(''20011231'',''yyyymmdd'')  

那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個范圍之內的。

所以,當時間需要精確的時候,覺得to_char還是必要的

7. 日期格式沖突問題

輸入的格式要看你安裝的Oracle字符集的類型, 比如: US7ASCII, date格式的類型就是: ''01-Jan-01''

  1. alter system set NLS_DATE_LANGUAGE = American   
  2. alter session set NLS_DATE_LANGUAGE = American  

或者在to_date中寫

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
    ''day'',''NLS_DATE_LANGUAGE = American'') from dual;  

注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,

可查看

q查找2002-02-28至2002-02-01間除星期一和七的天數

在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).

9.

  1. select months_between(to_date(''01-31-1999'',''MM-DD-YYYY''),   
  2. to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;   
  3. 1  
  4. select months_between(to_date(''02-01-1999'',''MM-DD-YYYY''),   
  5. to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;  
  6. 1.03225806451613   
  7.  

10. Next_day的用法

  1. Next_day(date, day)  
  2. Monday-Sunday, for format code DAY   
  3. Mon-Sun, for format code DY   
  4. 1-7, for format code D  

以上的相關內容就是對Oracle時間的介紹,望你能有所收獲。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved