熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle日期操作方法

2013-11-13 15:39:09  來源: Oracle 

  在oracle中有很多關於日期的函數如:

  add_months()用於從一個日期值增加或減少一些月份

  date_value:=add_months(date_valuenumber_of_months)

  例:

  SQL> select add_months(sysdate) Next Year from dual;

  Next Year

  

  

  SQL> select add_months(sysdate) Last Year from dual;

  Last Year

  

  

  SQL>

  current_date()返回當前會放時區中的當前日期

  date_value:=current_date

  SQL> column sessiontimezone for a

  SQL> select sessiontimezonecurrent_date from dual;

  SESSIONTIMEZONE CURRENT_DA

  

  +:

  SQL> alter session set time_zone=:

   /

  會話已更改

  SQL> select sessiontimezonecurrent_timestamp from dual;

  SESSIONTIMEZONE CURRENT_TIMESTAMP

  

  : 下午 :

  

  SQL>

  current_timestamp()以timestamp with time zone數據類型返回當前會放時區中的當前日期

  timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])

  SQL> column sessiontimezone for a

  SQL> column current_timestamp format a

  SQL> select sessiontimezonecurrent_timestamp from dual;

  SESSIONTIMEZONE CURRENT_TIMESTAMP

  

  +: 上午 +:

  

  SQL> alter session set time_zone=:

   /

  會話已更改

  SQL> select sessiontimezonecurrent_timestamp from dual;

  SESSIONTIMEZONE CURRENT_TIMESTAMP

  

  : 下午 :

  

  SQL>

  dbtimezone()返回時區

  varchar_value:=dbtimezone

  SQL> select dbtimezone from dual;

  DBTIME

  

  :

  SQL>

  extract()找出日期或間隔值的字段值

  date_value:=extract(date_field from [datetime_value|interval_value])

  SQL> select extract(month from sysdate) This Month from dual;

  This Month

  

  

  SQL> select extract(year from add_months(sysdate)) Years Out from dual;

   Years Out

  

  

  SQL>

  last_day()返回包含了日期參數的月份的最後一天的日期

  date_value:=last_day(date_value)

  SQL> select last_day(date) Leap Yr? from dual;

  Leap Yr?

  

  

  SQL> select last_day(sysdate) Last day of this month from dual;

  Last day o

  

  

  SQL>

  localtimestamp()返回會話中的日期和時間

  timestamp_value:=localtimestamp

  SQL> column localtimestamp format a

  SQL> select localtimestamp from dual;

  LOCALTIMESTAMP

  

  

  下午

  SQL> select localtimestampcurrent_timestamp from dual;

  LOCALTIMESTAMP CURRENT_TIMESTAMP

  

   下午 +:

  下午

  SQL> alter session set time_zone=:;

  會話已更改

  SQL> select localtimestampto_char(sysdateDDMMYYYY HH:MI:SS AM) SYSDATE from dual;

  LOCALTIMESTAMP SYSDATE

  

   :: 下午

  下午

  SQL>

  months_between()判斷兩個日期之間的月份數量

  number_value:=months_between(date_valuedate_value)

  SQL> select months_between(sysdatedate) from dual;

  MONTHS_BETWEEN(SYSDATEDATE)

  

  

  SQL> select months_between(sysdatedate) from dual;

  MONTHS_BETWEEN(SYSDATEDATE)

  

  

  SQL>

  next_day()給定一個日期值返回由第二個參數指出的日子第一次出現在的日期值(應返回相應日子的名稱字符串)

  說明:

  單行日期函數

  單行日期函數操作data數據類型絕大多數都有data數據類型的參數絕大多數返回的也是data數據類型的值

  add_months()

  返回日期d加上i個月後的結果i可以使任意整數如果i是一個小數那麼數據庫將隱式的他轉換成整數將會截去小數點後面的部分

  last_day()

  函數返回包含日期d的月份的最後一天

  months_between()

  返回d和d之間月的數目如果d和d的日的日期都相同或者都使該月的最後一天那麼將返回一個整數否則會返回的結果將包含一個分數

  new_time()

  d是一個日期數據類型當時區tz中的日期和時間是d時返回時區tz中的日期和時間tz和tz時字符串

  next_day()

  返回日期d後由dow給出的條件的第一天dow使用當前會話中給出的語言指定了一周中的某一天返回的時間分量與d的時間分量相同

  select next_day(janmonday) st mondaynext_day(novtuesday)+ nd tuesday) from dual;st monday nd tuesdayjan nov

  round([])

  將日期d按照fmt指定的格式捨入fmt為字符串

  syadate

  函數沒有參數返回當前日期和時間

  trunc([])

  返回由fmt指定的單位的日期d

  單行轉換函數

  單行轉換函數用於操作多數據類型在數據類型之間進行轉換

  chartorwid()

  c 使一個字符串函數將c轉換為rwid數據類型

  select test_id from test_case where rowid=chartorwid(aaaasaacaaaaliaaa)

  convert([])

  c尾字符串dsetsset是兩個字符集函數將字符串c由sset字符集轉換為dset字符集sset的缺省設置為數據庫的字符集

  hextoraw()

  x為進制的字符串函數將進制的x轉換為raw數據類型

  rawtohex()

  x是raw數據類型字符串函數將raw數據類轉換為進制的數據類型

  rowidtochar()

  函數將rowid數據類型轉換為char數據類型

  to_char([[)

  x是一個data或number數據類型函數將x轉換成fmt指定格式的char數據類型如果x為日期nlsparm=nls_date_language 控制返回的月份和日份所使用的語言如果x為數字nlsparm=nls_numeric_characters 用來指定小數位和千分位的分隔符以及貨幣符號

  nls_numeric_characters =dg nls_currency=string

  to_date([[)

  c表示字符串fmt表示一種特殊格式的字符串返回按照fmt格式顯示的cnlsparm表示使用的語言函數將字符串c轉換成date數據類型

  to_multi_byte()

  c表示一個字符串函數將c的擔子截字符轉換成多字節字符

  to_number([[)

  c表示字符串fmt表示一個特殊格式的字符串函數返回值按照fmt指定的格式顯示nlsparm表示語言函數將返回c代表的數字

  to_single_byte()

  將字符串c中得多字節字符轉化成等價的單字節字符該函數僅當數據庫字符集同時包含單字節和多字節字符時才使用

  Oracle關於時間/日期的操作

  日期時間間隔操作

  當前時間減去分鐘的時間

  select sysdatesysdate interval MINUTE from dual

  當前時間減去小時的時間

  select sysdate interval hour from dual

  當前時間減去天的時間

  select sysdate interval day from dual

  當前時間減去月的時間

  select sysdatesysdate interval month from dual

  當前時間減去年的時間

  select sysdatesysdate interval year from dual

  時間間隔乘以一個數字

  select sysdatesysdate *interval hour from dual

  日期到字符操作

  select sysdateto_char(sysdateyyyymmdd hh:mi:ss) from dual

  select sysdateto_char(sysdateyyyymmdd hh:mi:ss) from dual

  select sysdateto_char(sysdateyyyyddd hh:mi:ss) from dual

  select sysdateto_char(sysdateyyyymm iwd hh:mi:ss) from dual

  參考oracle的相關關文檔(ORACLEDOC/SERVER/A/SQL_ELEMENTSHTM#)

   字符到日期操作

  select to_date( ::yyyymmdd hh:mi:ss) from dual

  具體用法和上面的to_char差不多

   trunk/ ROUND函數的使用

  select trunc(sysdate YEAR) from dual

  select trunc(sysdate ) from dual

  select to_char(trunc(sysdate YYYY)YYYY) from dual

  oracle有毫秒級的數據類型

  返回當前時間 年月日小時分秒毫秒

  select to_char(current_timestamp()DDMONYYYY HH:MI:SSxFF) from dual;

  返回當前 時間的秒毫秒可以指定秒後面的精度(最大=)

  select to_char(current_timestamp()MI:SSxFF) from dual;

  計算程序運行的時間(ms)

  declare

  type rc is ref cursor;

  l_rc rc;

  l_dummy all_objectsobject_name%type;

  l_start number default dbms_utilityget_time;

  begin

  for I in

  loop

  open l_rc for

  select object_name from all_objects ||

  where object_id = || i;

  fetch l_rc into l_dummy;

  close l_rc;

  end loop;

  dbms_outputput_line

  ( round( (dbms_utilityget_timel_start)/ ) ||

   seconds );

  end;


From:http://tw.wingwit.com/Article/program/Oracle/201311/17078.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.