時間: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)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法