oracle 之特殊funxtions應用
第一:時間相加(對於day、hour、minute、second使用的是numtodsinterval函式,方法和numtoyminterval一樣。後面可以跟變數)
select numtodsinterval(10, 'day') + numtodsinterval(2, 'hour') +
numtodsinterval(3, 'minute') + numtodsinterval(2.3312, 'second')
from dual
+000000010 02:03:02.331200000
第二:使用dump函式可以檢視每一行的內部存數結構。
SQL> select cola,dump(cola) from test_char;
a Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32
aa Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32
aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32
aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32
aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97
select numtodsinterval(10, 'day') + numtodsinterval(2, 'hour') +
numtodsinterval(3, 'minute') + numtodsinterval(2.3312, 'second')
from dual
+000000010 02:03:02.331200000
第二:使用dump函式可以檢視每一行的內部存數結構。
SQL> select cola,dump(cola) from test_char;
a Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32
aa Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32
aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32
aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32
aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97
Typ=96 表示資料型別的ID。Oracle為每一種資料型別都進行了編號。說明char型別的編號是96.
Len =10 表示所在的內部儲存的長度(用位元組表示)。雖然第一例只存了一個字元’a’,但是它還是佔用了10個位元組的空間。
97,32,32,32,32,32,32,32,32,32 表示內部儲存方式。可見oracle的內部儲存是以資料庫字符集進行儲存的。
97正好是字元a的ASCII碼。
可以使用chr函式把ASCII碼轉成字元。
SQL> select chr(97) from dual;
Len =10 表示所在的內部儲存的長度(用位元組表示)。雖然第一例只存了一個字元’a’,但是它還是佔用了10個位元組的空間。
97,32,32,32,32,32,32,32,32,32 表示內部儲存方式。可見oracle的內部儲存是以資料庫字符集進行儲存的。
97正好是字元a的ASCII碼。
可以使用chr函式把ASCII碼轉成字元。
SQL> select chr(97) from dual;
C
-
a
-
a
第三 規則
Numtodsinterval(n, 'second') 獲得秒的時間間隔
Numtodsinterval(n, 'minute') 獲得分的時間間隔
Numtodsinterval(n, 'month') 獲得月的時間間隔
Numtodsinterval(n, 'year') 獲得月的時間間隔
Numtodsinterval(n, 'second') 獲得秒的時間間隔
Numtodsinterval(n, 'minute') 獲得分的時間間隔
Numtodsinterval(n, 'month') 獲得月的時間間隔
Numtodsinterval(n, 'year') 獲得月的時間間隔
增加月份時要非常的小心,應該使用add_months函式。為什麼呢?
比如當前日期為2000-2-29日。增加一個月得到的日期就應該是2000-3-31
如果只是簡單的加30天或加31天,是無法實現的。所以必須使用add_months函式,它會自動來處理這種月末問題。對年份進行增加也會出現類似的問題
比如當前日期為2000-2-29日。增加一個月得到的日期就應該是2000-3-31
如果只是簡單的加30天或加31天,是無法實現的。所以必須使用add_months函式,它會自動來處理這種月末問題。對年份進行增加也會出現類似的問題
第四:interval的使用
SQL> select sysdate +interval '+3' month from dual;
SYSDATE+INTERV
--------------
01-12月-11
--------------
01-12月-11
SQL> select sysdate +interval '+2' month from dual;
SYSDATE+INTERV
--------------
01-11月-11
SYSDATE+INTERV
--------------
01-11月-11
SQL> select to_date('2007-02-28','yyyy-mm-dd')+interval '+3' month from dual;
TO_DATE('2007-
--------------
28-5月 -07
--------------
28-5月 -07
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20976446/viewspace-706444/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 特殊字元、Date、JS應用字元JS
- oracle之profile的應用Oracle
- oracle之 profile的應用Oracle
- oracle登陸之轉義特殊字元Oracle字元
- 應用oracle flashback--Flashback Table之RECYCLEBINOracle
- Oracle 去特殊字元Oracle字元
- Java反射以及在Android中的特殊應用Java反射Android
- 【徵文】應用oracle flashback(2.1)--Flashback Table之RECYCLEBINOracle
- Oracle 特殊字元轉義Oracle字元
- oracle10G新特性之ASM的應用OracleASM
- oracle sql應用OracleSQL
- Linux /dev 常見特殊裝置介紹與應用Linuxdev
- 從VB 6到VB.NET——窗體特殊應用 (轉)
- 【徵文】應用oracle flashback(2.3)--Flashback Table之注意事項Oracle
- Oracle效能最佳化之應用最佳化(轉)Oracle
- 啟動關聯的應用程式開啟特殊檔案 (轉)
- Oracle分析函式之LEAD和LAG實際應用Oracle函式
- oracle10G新特性之段顧問的應用Oracle
- 兩種Oracle應用程式開發介面之簡要分析Oracle
- 下載:Oracle EBS 11i應用技術之WorkflowOracle
- ORACLE 命令的應用Oracle
- [應用案例]OT應用案例之dasdig
- oracle 特殊SQL(TABLE( CAST( MULTISET()[zt]OracleSQLAST
- 十、特殊應用:人臉識別和神經風格轉換
- 【徵文】應用oracle flashback(2.2)--Flashback Table之從UNDO中恢復Oracle
- oracle database link 應用OracleDatabase
- Oracle Audit 應用實踐Oracle
- ORACLE 應用經驗(form)OracleORM
- ORACLE簡單應用 (轉)Oracle
- MySQL用LIKE特殊字元搜尋MySql字元
- Oracle特殊符號的模糊查詢Oracle符號
- 【OS】Linux下 /dev 常見特殊裝置介紹與應用[loop]LinuxdevOOP
- 《反應式應用開發》之“什麼是反應式應用”
- DataGuard之Apply Services(redo應用和SQL應用)APPSQL
- Microsoft Store 桌面應用釋出流程(一)之打包應用ROS
- Microsoft Store 桌面應用釋出流程(二)之提交應用ROS
- Oracle錄入特殊字元 [&] 的小問題Oracle字元
- HugePage在oracle中的應用Oracle