锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
date綾誨瀷涓嶈兘鍖呭惈縐掍互鍚庣殑綺懼害銆?
濡傛棩鏈燂細2010-01-01 20:02:20.0
瑙e喅鏂規(guī)硶錛氬皢鏃ユ湡縐掍互鍚庣殑綺懼害鍘婚櫎
濡傛棩鏈燂細2010-01-01 20:02:20
2銆両NSERT INTO TEST2 (C1, C2,c3) VALUES (${v1},${v2},to_date(${v3},'yyyy-mm-dd'));
oracle閲岄潰涓嶉渶瑕佷互“錛?#8221;緇撳熬銆?/p>
3銆佷慨鏀規(guī)暟鎹簱鏃ユ湡鏍煎紡錛?br />alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
榪欎釜鍛戒護鐨勯傜敤鑼冨洿錛屾槸淇敼褰撳墠SESSION錛屽彟澶栬繖涓嶈兘淇敼絎笁鏂瑰伐鍏風(fēng)殑鏃ユ湡鏍煎紡錛屽錛歅L/SQL DEVELOPER闇瑕佸湪Tools->Preferences->User Interface->Date/Time涓嬩慨鏀規(guī)牸寮忓嵆鍙紝絎笁鏂瑰伐鍏風(fēng)殑鏃ユ湡鏍煎紡鍦ㄥ伐鍏峰唴閮ㄨ嚜宸卞幓璁劇疆錛屾垜浼拌浣犱篃搴旇鍦ㄧ涓夋柟宸ュ叿涓嬫墠浼氱湅鍒拌繖鏍風(fēng)殑鏁堟灉錛屼竴鑸粯璁ゆ儏鍐典笅ORACLE榛樿鐨勬棩鏈熸牸寮忎笉鏄繖鏍風(fēng)殑銆?/p>
鍦ㄩ粯璁ょ殑sqlplus鎴栬卻qlplusw涓嬫垨鑰呯▼搴忕紪鍐欒繃紼嬩腑錛屾墽琛岃鍛戒護鍚庯紝濡傛灉鏄悓涓涓猻ession鏄偗瀹氫細浜х敓浣犺鐨勬晥鏋溿?/p>
濡傛灉瑕佸皢鏁翠綋鐨勬暟鎹簱綰у埆榛樿鏍煎紡鏀規(guī)帀闇瑕佷慨鏀瑰弬鏁版枃浠訛紝騫墮噸鍚暟鎹簱鎵嶅彲浠ワ紝浣嗘槸榪欎釜涔熸敼涓嶆帀浣犵涓夋柟宸ュ叿鐨勬樉紺烘牸寮忥紝絎笁鏂瑰伐鍏峰彧鑳藉湪宸ュ叿鍐呴儴鍘繪敼錛屽畠鍙兘鏀規(guī)帀榛樿鐨勬棩鏈熸牸寮忥紝絎笁鏂瑰伐鍏烽兘鏄漿鎹㈠悗鐨勶紱浣嗘槸寰堝鏃跺欏鏄撹宸ュ叿鎵蹇芥?zhèn)犲Q岀粰浜虹殑鎰熻灝辨槸鏁版嵁搴撳氨鏄繖鏍峰瓨鍌ㄧ殑錛屽叾瀹炲瓨鍌ㄧ殑鍙湁鏃ユ湡鏍煎紡錛屾病鏈塝YYYMM榪欎簺涓滆タ錛岃繖浜涗笢瑗塊兘鏄氳繃綆楁硶璁$畻鍑烘潵鐨勭粨鏋滐紝鐒跺悗鏍規(guī)嵁鏍煎紡瑕佹眰榪涜瀵瑰簲鐨勬牸寮忓寲緇欑湅鍒扮殑榪欐牱鐨勬晥鏋滆屽凡銆?/p>
4銆両NSERT INTO TEST2 (C1, C2,c3) VALUES ('1',1,to_date('2010-12-27 00:00:00','yyyy-mm-dd')) 涓嶅彲浠?br />INSERT INTO TEST2 (C1, C2,c3) VALUES (1,1,to_date('2010-12-27 00:00:00','yyyy-mm-dd hh24:mi:ss')) 鍙互
to_date鏄被鍨嬭漿鎹紝涓嶆槸鏍煎紡杞崲錛屽瓧絎︿覆鍜屽悗闈㈢殑鏍煎紡瑕佸尮閰嶏紱to_char鎵嶆槸杞垚瀵瑰簲鏍煎紡錛?/p>
oracle鏃ユ湡鏍煎紡鎬葷粨鍦╫racle涓鐞嗘棩鏈熷ぇ鍏?/p>
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 ....
1.
鏃ユ湡鍜屽瓧絎﹁漿鎹㈠嚱鏁扮敤娉曪紙to_date,to_char錛?/p>
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
璁劇疆鏃ユ湡璇█
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
涔熷彲浠ヨ繖鏍?
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
4.
涓や釜鏃ユ湡闂寸殑澶╂暟
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
5. 鏃墮棿涓簄ull鐨勭敤娉?
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')
閭d箞12鏈?1鍙蜂腑鍗?2鐐逛箣鍚庡拰12鏈?鍙風(fēng)殑12鐐逛箣鍓嶆槸涓嶅寘鍚湪榪欎釜鑼冨洿涔嬪唴鐨勩?
鎵浠ワ紝褰撴椂闂撮渶瑕佺簿紜殑鏃跺欙紝瑙夊緱to_char榪樻槸蹇呰鐨?
7. 鏃ユ湡鏍煎紡鍐茬獊闂
杈撳叆鐨勬牸寮忚鐪嬩綘瀹夎鐨凮RACLE瀛楃闆嗙殑綾誨瀷, 姣斿: 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鑷?002-02-01闂撮櫎鏄熸湡涓鍜屼竷鐨勫ぉ鏁?
鍦ㄥ墠鍚庡垎鍒皟鐢―BMS_UTILITY.GET_TIME, 璁╁悗灝嗙粨鏋滅浉鍑?寰楀埌鐨勬槸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 涓庢渶鍚庝竴琛屾槸涓鏍風(fēng)殑
鍙互寤虹珛涓涓嚱鏁版潵澶勭悊榪欎釜闂
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.
鑾峰緱灝忔椂鏁?/p>
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.
澶勭悊鏈堜喚澶╂暟涓嶅畾鐨勫姙娉?
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
16.
鎵懼嚭浠婂勾鐨勫ぉ鏁?
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
闂板勾鐨勫鐞嗘柟娉?
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )
濡傛灉鏄?8灝變笉鏄棸騫?/p>
17.
yyyy涓巖rrr鐨勫尯鍒?
'YYYY99 TO_C
------- ----
yyyy 99 0099
rrrr 99 1999
yyyy 01 0001
rrrr 01 2001
18.涓嶅悓鏃跺尯鐨勫鐞?
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浣嶇鏁?/p>
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(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)
select * from tabname
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');
//
floor((date2-date1) /365) 浣滀負騫?
floor((date2-date1, 365) /30) 浣滀負鏈?
mod(mod(date2-date1, 365), 30)浣滀負鏃?
23.next_day鍑芥暟
next_day(sysdate,6)鏄粠褰撳墠寮濮嬩笅涓涓槦鏈熶簲銆傚悗闈㈢殑鏁板瓧鏄粠鏄熸湡鏃ュ紑濮嬬畻璧楓?
1 2 3 4 5 6 7
鏃?涓 浜?涓?鍥?浜?鍏?/p>
oracle涓湁寰堝鍏充簬鏃ユ湡鐨勫嚱鏁?/p>
鍦╫racle涓湁寰堝鍏充簬鏃ユ湡鐨勫嚱鏁幫紝濡傦細
1銆乤dd_months()鐢ㄤ簬浠庝竴涓棩鏈熷煎鍔犳垨鍑忓皯涓浜涙湀浠?
date_value:=add_months(date_value,number_of_months)
渚嬶細
SQL> select add_months(sysdate,12) "Next Year" from dual;
Next Year
----------
13-11鏈?04
SQL> select add_months(sysdate,112) "Last Year" from dual;
Last Year
----------
13-3鏈?-13
SQL>
2銆乧urrent_date()榪斿洖褰撳墠浼氭斁鏃跺尯涓殑褰撳墠鏃ユ湡
date_value:=current_date
SQL> column sessiontimezone for a15
SQL> select sessiontimezone,current_date from dual;
SESSIONTIMEZONE CURRENT_DA
--------------- ----------
+08:00 13-11鏈?03
SQL> alter session set time_zone='-11:00'
2 /
浼氳瘽宸叉洿鏀廣?/p>
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11鏈?03 04.59.13.668000 涓嬪崍 -11:
00
SQL>
3銆乧urrent_timestamp()浠imestamp with time zone鏁版嵁綾誨瀷榪斿洖褰撳墠浼氭斁鏃跺尯涓殑褰撳墠鏃ユ湡
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a15
SQL> column current_timestamp format a36
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
+08:00 13-11鏈?03 11.56.28.160000 涓婂崍 +08:
00
SQL> alter session set time_zone='-11:00'
2 /
浼氳瘽宸叉洿鏀廣?/p>
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
--------------- ------------------------------------
-11:00 12-11鏈?03 04.58.00.243000 涓嬪崍 -11:
00
SQL>
4銆乨btimezone()榪斿洖鏃跺尯
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
------
-07:00
SQL>
5銆乪xtract()鎵懼嚭鏃ユ湡鎴栭棿闅斿肩殑瀛楁鍊?
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate) "This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
6銆乴ast_day()榪斿洖鍖呭惈浜嗘棩鏈熷弬鏁扮殑鏈堜喚鐨勬渶鍚庝竴澶╃殑鏃ユ湡
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;
Leap Yr?
----------
29-2鏈?-00
SQL> select last_day(sysdate) "Last day of this month" from dual;
Last day o
----------
30-11鏈?03
SQL>
7銆乴ocaltimestamp()榪斿洖浼氳瘽涓殑鏃ユ湡鍜屾椂闂?
timestamp_value:=localtimestamp
SQL> column localtimestamp format a28
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
----------------------------
13-11鏈?03 12.09.15.433000
涓嬪崍
SQL> select localtimestamp,current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
---------------------------- ------------------------------------
13-11鏈?03 12.09.31.006000 13-11鏈?03 12.09.31.006000 涓嬪崍 +08:
涓嬪崍 00
SQL> alter session set time_zone='-11:00';
浼氳瘽宸叉洿鏀廣?/p>
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;
LOCALTIMESTAMP SYSDATE
---------------------------- ------------------------
12-11鏈?03 05.11.31.259000 13-11-2003 12:11:31 涓嬪崍
涓嬪崍
SQL>
8銆乵onths_between()鍒ゆ柇涓や釜鏃ユ湡涔嬮棿鐨勬湀浠芥暟閲?
number_value:=months_between(date_value,date_value)
SQL> select months_between(sysdate,date'1971-05-18') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL> select months_between(sysdate,date'2001-01-01') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9銆乶ext_day()緇欏畾涓涓棩鏈熷鹼紝榪斿洖鐢辯浜屼釜鍙傛暟鎸囧嚭鐨勬棩瀛愮涓嬈″嚭鐜板湪鐨勬棩鏈熷鹼紙搴旇繑鍥炵浉搴旀棩瀛愮殑鍚嶇О瀛楃涓詫級
鑸囧懆鐩擱棞鏃ユ湡鍑芥暩
1.鏌ヨ鏌愬懆鐨勭涓澶?br />select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') last_day
from (select substr('2004-32', 1, 4) yy, to_number(substr('2004-32', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')-6 first_day from dual
select min(v_date) from
(select (to_date('200201','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2002-49'
2.鏌ヨ鏌愬懆鐨勬渶鍚庝竴澶?br />select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') - 6 first_day
from (select substr('2004-33', 1, 4) yy, to_number(substr('2004-33', 6)) ww
from dual)
select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d') last_day from dual
select max(v_date) from
(select (to_date('200408','yyyymm') + rownum) v_date
from all_tables
where rownum < 370)
where to_char(v_date,'yyyy-iw') = '2004-33'
3.鏌ヨ鏌愬懆鐨勬棩鏈?br />select min_date, to_char(min_date,'day') day from
(select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365)
union
select to_date(substr('2004-33',1,4)-1||
decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd') min_date
from all_tables
where rownum <= 7
union
select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd') min_date
from all_tables
where rownum <= 7
)
where to_char(min_date,'yyyy-iw') ='2004-33'
oracle涓椂闂磋繍綆?/p>
璁哄潧涓父甯哥湅鍒版湁瀵筼racle涓椂闂磋繍綆楁彁闂殑闂錛屼粖澶╂湁鏃墮棿錛岀湅浜嗙湅浠ュ墠鍚勪綅鍏勫紵鐨勮創(chuàng)瀛愶紝鏁寸悊浜嗕竴涓嬶紝騫朵綔浜嗕釜紺轟緥錛屽笇鏈涗細瀵瑰ぇ瀹舵湁甯姪銆?
棣栧厛鎰熻阿ern銆乪ric.li鍙婂悇鐗堜富榪樻湁鐑績鐨勫厔寮熶滑
鍐呭濡備笅錛?
1銆乷racle鏀寔瀵規(guī)棩鏈熻繘琛岃繍綆?
2銆佹棩鏈熻繍綆楁椂鏄互澶╀負鍗曚綅榪涜鐨?
3銆佸綋闇瑕佷互鍒嗙絳夋洿灝忕殑鍗曚綅綆楀兼椂錛屾寜鏃墮棿榪涘埗榪涜杞崲鍗沖彲
4銆佽繘琛屾椂闂磋繘鍒惰漿鎹㈡椂娉ㄦ剰鍔犳嫭鍙鳳紙瑙佺ず渚嬩腑綰㈣壊鎷彿錛夛紝鍚﹀垯浼氬嚭闂
SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';
浼氳瘽宸叉洿鏀廣?/p>
SQL> set serverout on
SQL> declare
2 DateValue date;
3 begin
4 select sysdate into DateValue from dual;
5 dbms_output.put_line('婧愭椂闂?'||to_char(DateValue));
6 dbms_output.put_line('婧愭椂闂村噺1澶?'||to_char(DateValue-1));
7 dbms_output.put_line('婧愭椂闂村噺1澶?灝忔椂:'||to_char(DateValue-1-1/24));
8 dbms_output.put_line('婧愭椂闂村噺1澶?灝忔椂1鍒?'||to_char(DateValue-1-1/24-1/(24*60)));
9 dbms_output.put_line('婧愭椂闂村噺1澶?灝忔椂1鍒?縐?'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6
0)));
10 end;
11 /
婧愭椂闂?2003-12-29 11:53:41
婧愭椂闂村噺1澶?2003-12-28 11:53:41
婧愭椂闂村噺1澶?灝忔椂:2003-12-28 10:53:41
婧愭椂闂村噺1澶?灝忔椂1鍒?2003-12-28 10:52:41
婧愭椂闂村噺1澶?灝忔椂1鍒?縐?2003-12-28 10:52:40
PL/SQL 榪囩▼宸叉垚鍔熷畬鎴愩?/p>