IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁數(shù)據(jù)庫Oracle → Oracle日期時間函數(shù)的應(yīng)用

Oracle日期時間函數(shù)的應(yīng)用

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  1、轉(zhuǎn)換函數(shù)

  與date操作關(guān)系最大的就是兩個轉(zhuǎn)換函數(shù):to_date(),to_char()

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

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

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

  多種日期格式:

  YYYY:四位表示的年份

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

  MM:01~12的月份編號

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

  MON:三位字符的月份縮寫

  WW:一年中的星期

  D:星期中的第幾天

  DD:月份中的第幾天

  DDD:年所中的第幾天

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

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

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

  MI:一小時中的分鐘

  SS:一分鐘中的秒

  SSSS:從午夜開始過去的秒數(shù)

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

  SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') time from dual;

  TIME

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

  2004-10-08 15:22:58

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

  在oracle中處理日期大全

  TO_DATE格式

  Day:

  dd number 12

  dy abbreviated fri

  day spelled out friday

  ddspth spelled out, ordinal twelfth

  Month:

  mm number 03

  mon abbreviated mar

  month spelled out march

  Year:

  yy two digits 98

  yyyy four digits 1998

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

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

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

  1.

  日期和字符轉(zhuǎn)換函數(shù)用法(to_date,to_char)

  2.

  select to_char( to_date(222,''J''),''Jsp'') from dual

  顯示Two Hundred Twenty-Two

  3.

  求某天是星期幾

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

  星期一

  select

  to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),''day'',''NLS_DATE_LANGUAGE

  = American'') from dual;

  monday

  設(shè)置日期語言

  ALTER SESSION SET NLS_DATE_LANGUAGE=''AMERICAN'';

  也可以這樣

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

  4.

  兩個日期間的天數(shù)

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

  5. 時間為null的用法

  select id, active_date from table1

  UNION

  select 1, TO_DATE(null) from dual;

  注意要用TO_DATE(null)

  6.

  a_date between to_date(''20011201'',''yyyymmdd'') and

  to_date(''20011231'',''yyyymmdd'')

  那么12月31號中午12點之后和12月1號的12點之前是不包含在這個范圍之內(nèi)的。

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

  7. 日期格式?jīng)_突問題

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

  alter system set NLS_DATE_LANGUAGE = American

  alter session set NLS_DATE_LANGUAGE = American

  或者在to_date中寫

  select

  to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),''day'',''NLS_DATE_LANGUAGE

  = American'') from dual;

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

  可查看

  select * from nls_session_parameters

  select * from V$NLS_PARAMETERS

  8.

  select count(*)

  from ( select rownum-1 rnum

  from all_objects

  where rownum <= to_date(''2002-02-28'',''yyyy-mm-dd'') - to_date(''2002-

  02-01'',''yyyy-mm-dd'')+1

  )

  where to_char( to_date(''2002-02-01'',''yyyy-mm-dd'')+rnum-1, ''D'' )

  not

  in ( ''1'', ''7'' )

  查找2002-02-28至2002-02-01間除星期一和七的天數(shù)

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

  9.

  select months_between(to_date(''01-31-1999'',''MM-DD-YYYY''),

  to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;

  1

  select months_between(to_date(''02-01-1999'',''MM-DD-YYYY''),

  to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;

  1.03225806451613

  10. Next_day的用法

  Next_day(date, day)

  Monday-Sunday, for format code DAY

  Mon-Sun, for format code DY

  1-7, for format code D

  11

  select to_char(sysdate,''hh:mi:ss'') TIME from all_objects

  注意:第一條記錄的TIME 與最后一行是一樣的

  可以建立一個函數(shù)來處理這個問題

  create or replace function sys_date return date is

  begin

  return sysdate;

  end;

  select to_char(sys_date,''hh:mi:ss'') from all_objects;

  12.

  獲得小時數(shù)

  SELECT EXTRACT(HOUR FROM TIMESTAMP ''2001-02-16 2:38:40'') from offer

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

  SYSDATE TO_CHAR(SYSDATE,''HH'')

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

  2003-10-13 19:35:21 07

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

  SYSDATE TO_CHAR(SYSDATE,''HH24'')

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

  2003-10-13 19:35:21 19

  獲取年月日與此類似

  13.

  年月日的處理

  select older_date,

  newer_date,

  years,

  months,

  abs(

  trunc(

  newer_date-

  add_months( older_date,years*12+months )

  )

  ) days

  from ( select

  trunc(months_between( newer_date, older_date )/12) YEARS,

  mod(trunc(months_between( newer_date, older_date )),

  12 ) MONTHS,

  newer_date,

  older_date

  from ( select hiredate older_date,

  add_months(hiredate,rownum)+rownum newer_date

  from emp )

  )

  14.

  處理月份天數(shù)不定的辦法

  select to_char(add_months(last_day(sysdate) +1, -2),

  ''yyyymmdd''),last_day(sysdate) from dual

  16.

  找出今年的天數(shù)

  select add_months(trunc(sysdate,''year''), 12) - trunc(sysdate,''year'')

  from dual

  閏年的處理方法

  to_char( last_day( to_date(''02'' || :year,''mmyyyy'') ), ''dd'' )

  如果是28就不是閏年

  17.

  yyyy與rrrr的區(qū)別

  ''YYYY99 TO_C

  ------- ----

  yyyy 99 0099

  rrrr 99 1999

  yyyy 01 0001

  rrrr 01 2001

  18.不同時區(qū)的處理

  select to_char( NEW_TIME( sysdate, ''GMT'',''EST''), ''dd/mm/yyyy

  hh:mi:ss'') ,sysdate

  from dual;

  19.

  5秒鐘一個間隔

  Select TO_DATE(FLOOR(TO_CHAR(sysdate,''SSSSS'')/300) * 300,''SSSSS'')

  ,TO_CHAR(sysdate,''SSSSS'')

  from dual

  2002-11-1 9:55:00 35786

  SSSSS表示5位秒數(shù)

#p#副標題#e#

  20.

  一年的第幾天

  select TO_CHAR(SYSDATE,''DDD''),sysdate from dual

  310 2002-11-6 10:03:51

  21.計算小時,分,秒,毫秒

  select

  Days,

  A,

  TRUNC(A*24) Hours,

  TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,

  TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,

  TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds

  from

  (

  select

  trunc(sysdat

關(guān)鍵詞標簽:Oracle

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法