ORACLE日期函数.docx

上传人:b****6 文档编号:7562126 上传时间:2023-01-25 格式:DOCX 页数:16 大小:21.79KB
下载 相关 举报
ORACLE日期函数.docx_第1页
第1页 / 共16页
ORACLE日期函数.docx_第2页
第2页 / 共16页
ORACLE日期函数.docx_第3页
第3页 / 共16页
ORACLE日期函数.docx_第4页
第4页 / 共16页
ORACLE日期函数.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

ORACLE日期函数.docx

《ORACLE日期函数.docx》由会员分享,可在线阅读,更多相关《ORACLE日期函数.docx(16页珍藏版)》请在冰豆网上搜索。

ORACLE日期函数.docx

ORACLE日期函数

oracleÈÕÆÚº¯Êý

trunc(sysdate,'Q')--±¾¼¾¶ÈµÚÒ»Ìì

trunc(sysdate,'D')--±¾ÖܵĵÚÒ»Ìì(ÖÜÈÕ)

²éѯOracleÈÕÆÚ¸ñʽ

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

select*fromnls_database_parameters;

µÃµ½½á¹ûÈçϱí:

±íÖÐNLS_DATE_FORMAT±íʾÈÕÆÚ¸ñʽ.

PARAMETERVALUE

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

NLS_LANGUAGEAMERICAN

NLS_TERRITORYAMERICA

NLS_CURRENCY$

NLS_ISO_CURRENCYAMERICA

NLS_NUMERIC_CHARACTERS.,

NLS_CHARACTERSETZHS16GBK

NLS_CALENDARGREGORIAN

NLS_DATE_FORMATDD-MON-RR

NLS_DATE_LANGUAGEAMERICAN

NLS_SORTBINARY

NLS_TIME_FORMATHH.MI.SSXFFAM

NLS_TIMESTAMP_FORMATDD-MON-RRHH.MI.SSXFFAM

NLS_TIME_TZ_FORMATHH.MI.SSXFFAMTZH:

TZM

NLS_TIMESTAMP_TZ_FORMATDD-MON-RRHH.MI.SSXFFAMTZH:

TZM

NLS_DUAL_CURRENCY$

NLS_COMPBINARY

NLS_NCHAR_CHARACTERSETZHS16GBK

NLS_RDBMS_VERSION8.1.7.0.0

»òÕß²éѯV$NLS_PARAMETERS±í,

select*fromV$NLS_PARAMETERS;

Ò²ÓÐÀàËƽá¹û.

to_date×Ö·û´®ÀàÐÍתΪ»»ÈÕÆÚÀàÐÍ

×Ö·û´®ÖеÄÏàӦλÖÃÉϵÄ×Ö·û,±ØÐë·ûºÏʱ¼ä·¶Î§µÄÏÞÖÆ

SQL>selectto_date('2004-11-1212-07-32','yyyy-mm-ddhh24-mi-ss')valuefromdual;

VALUE

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

2004.11.1212:

07:

32

SQL>selectto_date('20041015')valuefromdual;

VALUE

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

2004.10.1500:

00:

00

SQL>selectto_date('20041315')valuefromdual;

ERRORλÓÚµÚ1ÐÐ:

ORA-01861:

ÎÄ×ÖÓë¸ñʽ×Ö·û´®²»Æ¥Åä

sysdateµ±Ç°ÈÕÆÚºÍʱ¼ä

SQL>selectsysdatevaluefromdual;

VALUE

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

2003.11.2317:

09:

01

last_day±¾ÔÂ×îºóÒ»Ìì

SQL>selectlast_day(sysdate)valuefromdual;

VALUE

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

2003.11.3017:

08:

17

add_months(d,n)ÈÕÆÚdºóÍÆn¸öÔÂ

SQL>selectadd_months(sysdate,2)valuefromdual;

VALUE

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

2005.01.2317:

10:

21

next_day(d,day)ÈÕÆÚdÖ®ºóµÄµÚÒ»ÖÜÖÐ,Ö¸¶¨µÄÄÇÌì(Ö¸¶¨ÐÇÆڵĵڼ¸Ìì)ÊÇʲôÈÕÆÚ

SQL>selectnext_day(sysdate,1)valuefromdual;

VALUE

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

2004.11.2817:

38:

55

ÏàÐźܶàÈ˶¼Óйýͳ¼ÆijЩÊý¾ÝµÄ¾Àú£¬±ÈÈ磬Ҫͳ¼Æ²ÆÎñµÄÇé¿ö£¬¿ÉÄÜÒª°´Ã¿Ä꣬ÿ¼¾¶È£¬Ã¿Ô£¬ÉõÖÁÿ¸öÐÇÆÚÀ´·Ö±ðͳ¼Æ¡£ÄÇÔÚoracleÖÐÓ¦¸ÃÔõôÀ´Ð´sqlÓï¾äÄØ£¬Õâ¸öʱºòOracleµÄÈÕÆÚº¯Êý»á¸øÎÒÃǺܶà°ïÖú¡£

³£ÓÃÈÕÆÚÐͺ¯Êý

1¡£Sysdateµ±Ç°ÈÕÆÚºÍʱ¼ä

SQL>Selectsysdatefromdual;

SYSDATE

----------

21-6ÔÂ-05

2¡£Last_day±¾ÔÂ×îºóÒ»Ìì

SQL>Selectlast_day(sysdate)fromdual;

LAST_DAY(S

----------

30-6ÔÂ-05

3¡£Add_months(d,n)µ±Ç°ÈÕÆÚdºóÍÆn¸öÔÂ

ÓÃÓÚ´ÓÒ»¸öÈÕÆÚÖµÔö¼Ó»ò¼õÉÙһЩÔ·Ý

date_value:

=add_months(date_value,number_of_months)

SQL>Selectadd_months(sysdate,2)fromdual;

ADD_MONTHS

----------

21-8ÔÂ-05

4¡£Months_between(f,s)ÈÕÆÚfºÍs¼äÏà²îÔÂÊý

SQL>selectmonths_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))fromdual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))

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

-4.6966741

5¡£NEXT_DAY(d,day_of_week)

·µ»ØÓÉ"day_of_week"ÃüÃûµÄ£¬ÔÚ±äÁ¿"d"Ö¸¶¨µÄÈÕÆÚÖ®ºóµÄµÚÒ»¸ö¹¤×÷ÈÕµÄÈÕÆÚ¡£²ÎÊý"day_of_week"±ØÐëΪ¸ÃÐÇÆÚÖеÄijһÌì¡£

SQL>SELECTnext_day(to_date('20050620','YYYYMMDD'),1)FROMdual;

NEXT_DAY(T

----------

26-6ÔÂ-05

6¡£current_date()·µ»Øµ±Ç°»á»°Ê±ÇøÖеĵ±Ç°ÈÕÆÚ

date_value:

=current_date

SQL>columnsessiontimezonefora15

SQL>selectsessiontimezone,current_datefromdual;

SESSIONTIMEZONECURRENT_DA

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

+08:

0013-11ÔÂ-03

SQL>altersessionsettime_zone='-11:

00'2/

»á»°ÒѸü¸Ä¡£

SQL>selectsessiontimezone,current_timestampfromdual;

SESSIONTIMEZONECURRENT_TIMESTAMP

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

-11:

0012-11ÔÂ-0304.59.13.668000ÏÂÎç-11:

00

7¡£current_timestamp()ÒÔtimestampwithtimezoneÊý¾ÝÀàÐÍ·µ»Øµ±Ç°»á»°Ê±ÇøÖеĵ±Ç°ÈÕÆÚ

SQL>selectcurrent_timestampfromdual;

CURRENT_TIMESTAMP

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

21-6ÔÂ-0510.13.08.220589ÉÏÎç+08:

00

8¡£dbtimezone()·µ»ØʱÇø

SQL>selectdbtimezonefromdual;

DBTIME

------

-08:

00

9¡£extract()ÕÒ³öÈÕÆÚ»ò¼ä¸ôÖµµÄ×Ö¶ÎÖµ

date_value:

=extract(date_fieldfrom[datetime_value|interval_value])

SQL>selectextract(monthfromsysdate)"ThisMonth"fromdual;

ThisMonth

----------

6

SQL>selectextract(yearfromadd_months(sysdate,36))"Years"fromdual;

Years

----------

2008

10¡£localtimestamp()·µ»Ø»á»°ÖеÄÈÕÆÚºÍʱ¼ä

SQL>selectlocaltimestampfromdual;

LOCALTIMESTAMP

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

21-6ÔÂ-0510.18.15.855652ÉÏÎç

³£ÓÃÈÕÆÚÊý¾Ý¸ñʽ£¨¸Ã¶ÎΪժ³£©

Y»òYY»òYYYÄêµÄ×îºóһ룬Á½Î»»òÈýλSelectto_char(sysdate,¡¯YYY¡¯)fromdual£»002±íʾ2002Äê

SYEAR»òYEARSYEARʹ¹«ÔªÇ°µÄÄê·ÝÇ°¼ÓÒ»¸ººÅSelectto_char(sysdate,¡¯SYEAR¡¯)fromdual£»-1112±íʾ¹«ÔªÇ°1112Äê

Q¼¾¶È£¬1¡«3ÔÂΪµÚÒ»¼¾¶ÈSelectto_char(sysdate,¡¯Q¡¯)fromdual£»2±íʾµÚ¶þ¼¾¶È¢Ù

MMÔ·ÝÊýSelectto_char(sysdate,¡¯MM¡¯)fromdual£»12±íʾ12ÔÂ

RMÔ·ݵÄÂÞÂí±íʾSelectto_char(sysdate,¡¯RM¡¯)fromdual£»IV±íʾ4ÔÂ

MonthÓÃ9¸ö×Ö·û³¤¶È±íʾµÄÔ·ÝÃûSelectto_char(sysdate,¡¯Month¡¯)fromdual£»Mayºó¸ú6¸ö¿Õ¸ñ±íʾ5ÔÂ

WWµ±ÄêµÚ¼¸ÖÜSelectto_char(sysdate,¡¯WW¡¯)fromdual£»24±íʾ2002Äê6ÔÂ13ÈÕΪµÚ24ÖÜ

W±¾Ôµڼ¸ÖÜSelectto_char(sysdate,¡¯W¡¯)fromdual£»2002Äê10ÔÂ1ÈÕΪµÚ1ÖÜ

DDDµ±ÄêµÚ¼¸,1ÔÂ1ÈÕΪ001£¬2ÔÂ1ÈÕΪ032Selectto_char(sysdate,¡¯DDD¡¯)fromdual£»3632002Äê12ÔÂ29ÈÕΪµÚ363Ìì

DDµ±Ôµڼ¸ÌìSelectto_char(sysdate,¡¯DD¡¯)fromdual£»0410ÔÂ4ÈÕΪµÚ4Ìì

DÖÜÄÚµÚ¼¸ÌìSelectto_char(sysdate,¡¯D¡¯)fromdual£»52002Äê3ÔÂ14ÈÕΪÐÇÆÚÒ»

DYÖÜÄÚµÚ¼¸ÌìËõдSelectto_char(sysdate,¡¯DY¡¯)fromdual£»SUN2002Äê3ÔÂ24ÈÕΪÐÇÆÚÌì

HH»òHH1212½øÖÆСʱÊýSelectto_char(sysdate,¡¯HH¡¯)fromdual£»02ÎçÒ¹2µã¹ý8·ÖΪ02

HH2424СʱÖÆSelectto_char(sysdate,¡¯HH24¡¯)fromdual£»14ÏÂÎç2µã08·ÖΪ14

MI·ÖÖÓÊý(0¡«59)Selectto_char(sysdate,¡¯MI¡¯)fromdual£»17ÏÂÎç4µã17·Ö

SSÃëÊý(0¡«59)Selectto_char(sysdate,¡¯SS¡¯)fromdual£»2211µã3·Ö22Ãë

ÌáʾעÒâ²»Òª½«MM¸ñʽÓÃÓÚ·ÖÖÓ(·ÖÖÓÓ¦¸ÃʹÓÃMI)¡£MMÊÇÓÃÓÚÔ·ݵĸñʽ£¬½«ËüÓÃÓÚ·ÖÖÓÒ²Äܹ¤×÷£¬µ«½á¹ûÊÇ´íÎóµÄ¡£

 

ÏÖÔÚ¸ø³öһЩʵ¼ùºóµÄÓ÷¨£º

1¡£ÉÏÔÂÄ©Ì죺

SQL>selectto_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd')LastDayfrom

dual;

LASTDAY

----------

2005-05-31

2¡£ÉÏÔ½ñÌì

SQL>selectto_char(add_months(sysdate,-1),'yyyy-MM-dd')PreTodayfromdual;

 

PRETODAY

----------

2005-05-21

3.ÉÏÔÂÊ×Ìì

SQL>selectto_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd')firstDayfromdual;

FIRSTDAY

----------

2005-05-01

4.°´ÕÕÿÖܽøÐÐͳ¼Æ

SQL>selectto_char(sysdate,'ww')fromdualgroupbyto_char(sysdate,'ww');

TO

--

25

5¡£°´ÕÕÿÔ½øÐÐͳ¼Æ

SQL>selectto_char(sysdate,'mm')fromdualgroupbyto_char(sysdate,'mm');

TO

--

06

6¡£°´ÕÕÿ¼¾¶È½øÐÐͳ¼Æ

SQL>selectto_char(sysdate,'q')fromdualgroupbyto_char(sysdate,'q');

T

-

2

7¡£°´ÕÕÿÄê½øÐÐͳ¼Æ

SQL>selectto_char(sysdate,'yyyy')fromdualgroupbyto_char(sysdate,'yyyy');

TO_C

----

2005

8.ÒªÕÒµ½Ä³ÔÂÖÐËùÓÐÖÜÎåµÄ¾ßÌåÈÕÆÚ

selectto_char(t.d,'YY-MM-DD')from(

selecttrunc(sysdate,'MM')+rownum-1asd

fromdba_objects

whererownum<32)t

whereto_char(t.d,'MM')=to_char(sysdate,'MM')--ÕÒ³öµ±Ç°Ô·ݵÄÖÜÎåµÄÈÕÆÚ

andtrim(to_char(t.d,'Day'))='ÐÇÆÚÎå'

--------

03-05-02

03-05-09

03-05-16

03-05-23

03-05-30

Èç¹û°Ñwhereto_char(t.d,'MM')=to_char(sysdate,'MM')¸Ä³Ésysdate-90£¬¼´Îª²éÕÒµ±Ç°Ô·ݵÄÇ°Èý¸öÔÂÖеÄÿÖÜÎåµÄÈÕÆÚ¡£

9.oracleÖÐʱ¼äÔËËã

ÄÚÈÝÈçÏ£º

1¡¢oracleÖ§³Ö¶ÔÈÕÆÚ½øÐÐÔËËã

2¡¢ÈÕÆÚÔËËãʱÊÇÒÔÌìΪµ¥Î»½øÐеÄ

3¡¢µ±ÐèÒªÒÔ·ÖÃëµÈ¸üСµÄµ¥Î»Ëãֵʱ£¬°´Ê±¼ä½øÖƽøÐÐת»»¼´¿É

4¡¢½øÐÐʱ¼ä½øÖÆת»»Ê±×¢Òâ¼ÓÀ¨ºÅ£¬·ñÔò»á³öÎÊÌâ

SQL>altersessionsetnls_date_format='yyyy-mm-ddhh:

mi:

ss';

»á»°ÒѸü¸Ä¡£

SQL>setserverouton

SQL>declare

2DateValuedate;

3begin

4selectsysdateintoDateValuefromdual;

5dbms_output.put_line('Դʱ¼ä:

'||to_char(DateValue));

6dbms_output.put_line('Դʱ¼ä¼õ1Ìì:

'||to_char(DateValue-1));

7dbms_output.put_line('Դʱ¼ä¼õ1Ìì1Сʱ:

'||to_char(DateValue-1-1/24));

8dbms_output.put_line('Դʱ¼ä¼õ1Ìì1Сʱ1·Ö:

'||to_char(DateValue-1-1/24-1/(24*60)));

9dbms_output.put_line('Դʱ¼ä¼õ1Ìì1Сʱ1·Ö1Ãë:

'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*60)));

10end;

11/

Դʱ¼ä:

2003-12-2911:

53:

41

Դʱ¼ä¼õ1Ìì:

2003-12-2811:

53:

41

Դʱ¼ä¼õ1Ìì1Сʱ:

2003-12-2810:

53:

41

Դʱ¼ä¼õ1Ìì1Сʱ1·Ö:

2003-12-2810:

52:

41

Դʱ¼ä¼õ1Ìì1Сʱ1·Ö1Ãë:

2003-12-2810:

52:

40

PL/SQL¹ý³ÌÒѳɹ¦Íê³É¡£

 

ÔÚOracleÖÐʵÏÖʱ¼äÏà¼Ó´¦Àí

--Ãû³Æ£ºAdd_Times

--¹¦ÄÜ£º·µ»Ød1ÓëNewTimeÏà¼ÓÒÔºóµÄ½á¹û£¬ÊµÏÖʱ¼äµÄÏà¼Ó

--˵Ã÷£º¶ÔÓÚNewTimeÖеÄÈÕÆÚ²»Ó迼ÂÇ

--ÈÕÆÚ£º2004-12-07

--°æ±¾£º1.0

--×÷ÕߣºKevin

 

createorreplacefunctionAdd_Times(d1indate,NewTimeindate)returndate

is

hhnumber;

mmnumber;

ssnumber;

hoursnumber;

dResultdate;

begin

--ÏÂÃæÒÀ´ÎÈ¡³öʱ¡¢·Ö¡¢Ãë

selectto_number(to_char(NewTime,'HH24'))intohhfromdual;

selectto_number(to_char(NewTime,'MI'))intommfromdual;

selectto_number(to_char(NewTime,'SS'))intossfromdual;

--»»Ëã³öNewTimeÖÐСʱ×ܺͣ¬ÔÚÒ»ÌìµÄ°Ù·Ö¼¸

hours:

=(hh+(mm/60)+(ss/3600))/24;

--µÃ³öʱ¼äÏà¼ÓºóµÄ½á¹û

selectd1+hoursintodResultfromdual;

return(dResult);

endAdd_Times;

 

--²âÊÔÓÃÀý

--selectAdd_Times(sysdate,to_date('2004-12-0603:

23:

00','YYYY-MM-DDHH24:

MI:

SS'))fromdual

 

ÔÚOracle9iÖмÆËãʱ¼ä²î

¼ÆËãʱ¼ä²îÊÇOracleDATAÊý¾ÝÀàÐ͵ÄÒ»¸ö³£¼ûÎÊÌâ¡£OracleÖ§³ÖÈÕÆÚ¼ÆË㣬Äã¿ÉÒÔ´´½¨ÖîÈç¡°ÈÕÆÚ1£ÈÕÆÚ2¡±ÕâÑùµÄ±í´ïʽÀ´¼ÆËãÕâÁ½¸öÈÕÆÚÖ®¼äµÄʱ¼ä²î¡£

 

Ò»µ©Äã·¢ÏÖÁËʱ¼ä²îÒ죬Äã¿ÉÒÔʹÓüòµ¥µÄ¼¼ÇÉÀ´ÒÔÌ졢Сʱ¡¢·ÖÖÓ»òÕßÃëΪµ¥Î»À´¼ÆËãʱ¼ä²î¡£ÎªÁ˵õ½Êý¾Ý²î£¬Äã±ØÐëÑ¡ÔñºÏÊʵÄʱ¼ä¶ÈÁ¿µ¥Î»£¬ÕâÑù¾Í¿ÉÒÔ½øÐÐÊý¾Ý¸ñʽÒþ²Ø¡£

ʹÓÃÍêÉƸ´ÔÓµÄת»»º¯ÊýÀ´×ª»»ÈÕÆÚÊÇÒ»¸öÓջ󣬵«ÊÇÄã»á·¢ÏÖÕâ²»ÊÇ×îºÃµÄ½â¾ö·½·¨¡£

round(to_number(end-date-start_date))-ÏûÊŵÄʱ¼ä£¨ÒÔÌìΪµ¥Î»£©

round(to_number(end-date-start_date)*24)-ÏûÊŵÄʱ¼ä£¨ÒÔСʱΪµ¥Î»£©

round(to_number(end-date-start_date)*1440)-ÏûÊŵÄʱ¼ä£¨ÒÔ·ÖÖÓΪµ¥Î»£©

ÏÔʾʱ¼ä²îµÄĬÈÏģʽÊÇʲô£¿ÎªÁËÕÒµ½Õâ¸öÎÊÌâµÄ´ð°¸£¬ÈÃÎÒÃǽøÐÐÒ»¸ö¼òµ¥µÄSQ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1