一、Oracle中的to_date()函數(shù)1、to_date()與24小時(shí)制表示法及mm分鐘的顯示:在使用Oracle的to_date函數(shù)來做日期轉(zhuǎn)換時(shí),很多Java程序員也許會直接的采用“yyyy-MM-dd HH:mm:ss”的格式作為格式進(jìn)行轉(zhuǎn)換,但是在Oracle中會引起錯誤:“ORA 01810 格式代碼出現(xiàn)兩次”。 如:select to_date('2005-01-01 13:14:20’,’yyyy-MM-dd HH24:mm:ss’) from dual; 原因是SQL中不區(qū)分大小寫,MM和mm被認(rèn)為是相同的格式代碼,所以O(shè)racle的SQL采用了mi代替分鐘。 select to_date('2005-01-01 13:14:20’,’yyyy-MM-dd HH24:mi:ss’) from dual; 實(shí)例: (1)select to_char(sysdate,’yyyy-MM-dd HH:mi:ss’)from dual; 采用12小時(shí)制 //2018-05-17 10:54:21
(2)select to_char(sysdate,’Day, HH12:MI:SS’) from dual; //星期四, 11:11:26
(3)select to_char(sysdate,’Day, yyyy-MM-dd HH:mi:ss’) from dual; //星期四, 2018-05-17 11:12:26
(4)select to_char(sysdate,’yyyy-MM-dd Day HH:mi:ss’) from dual; 2018-05-17 星期四 11:13:20
2、oracle中的to_date參數(shù)含義(1)日期格式參數(shù)含義說明D 一周中的星期幾 DAY 天的名字,使用空格填充到9個字符 DD 月中的第幾天 DDD 年中的第幾天 DY 天的簡寫名 IW ISO標(biāo)準(zhǔn)的年中的第幾周 IYYY ISO標(biāo)準(zhǔn)的四位年份 YYYY 四位年份 YYY,YY,Y 年份的最后三位,兩位,一位 HH 小時(shí),按12小時(shí)計(jì) HH24 小時(shí),按24小時(shí)計(jì) MI 分 SS 秒 MM 月 Mon 月份的簡寫 Month 月份的全名 W 該月的第幾個星期 WW 年中的第幾個星期
(2)日期時(shí)間間隔操作當(dāng)前時(shí)間減去7分鐘的時(shí)間 select sysdate,sysdate - interval ’7’ MINUTE from dual 當(dāng)前時(shí)間減去7小時(shí)的時(shí)間 select sysdate - interval ’7’ hour from dual 當(dāng)前時(shí)間減去7天的時(shí)間 select sysdate - interval ’7’ day from dual 當(dāng)前時(shí)間減去7月的時(shí)間 select sysdate,sysdate - interval ’7’ month from dual 當(dāng)前時(shí)間減去7年的時(shí)間 select sysdate,sysdate - interval ’7’ year from dual 時(shí)間間隔乘以一個數(shù)字 select sysdate,sysdate - 8 *interval ’2’ hour from dual
(3)日期到字符操作select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual 參考o(jì)racle的相關(guān)關(guān)文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
(4)字符到日期操作select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual 具體用法和上面的to_char差不多。
(5)trunk/ ROUND函數(shù)的使用select trunc(sysdate ,’YEAR’) from dual select trunc(sysdate ) from dual select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual
(6)oracle有毫秒級的數(shù)據(jù)類型–返回當(dāng)前時(shí)間 年月日小時(shí)分秒毫秒 select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual; –返回當(dāng)前時(shí)間的秒毫秒,可以指定秒后面的精度(最大=9) select to_char(current_timestamp(9),’MI:SSxFF’) from dual;
二、Oracle中的to_char()函數(shù)(1)用作日期轉(zhuǎn)換:to_char(date,’格式’); select to_date('2005-01-01 ',’yyyy-MM-dd’) from dual; select to_char(sysdate,’yyyy-MM-dd HH24:mi:ss’) from dual;
(2)處理數(shù)字:to_char(number,’格式’); select to_char(88877) from dual; select to_char(1234567890,’099999999999999’) from dual; select to_char(12345678,’999,999,999,999’) from dual; select to_char(123456,’99.999’) from dual; select to_char(1234567890,’999,999,999,999.9999’) from dual;
(3)to_char(salary,’<script type="math/tex" id="MathJax-Element-1">99,99’);select TO_CHAR(123,’</script>99,999.9’) from dual;
(4)用于進(jìn)制轉(zhuǎn)換:將10進(jìn)制轉(zhuǎn)換為16進(jìn)制;select to_char(4567,’xxxx’) from dual; select to_char(123,’xxx’) from dual;
例子:to_char() 例子輸入 輸出 to_char(-0.1,’99.99’) ’ -.10’ to_char(-0.1,’FM9.99’) '-.1’ to_char(0.1,’0.9’) ’ 0.1’ to_char(12,’9990999.9’) ’ 0012.0’ to_char(12,’FM9990999.9’) '0012’ to_char(485,’999’) ’ 485’ to_char(-485,’999’) '-485’ to_char(485,’9 9 9’) ’ 4 8 5’ to_char(1485,’9,999’) ’ 1,485’ to_char(1485,’9G999’) ’ 1 485’ to_char(148.5,’999.999’) ’ 148.500’ to_char(148.5,’999D999’) ’ 148,500’ to_char(3148.5,’9G999D999’) ’ 3 148,500’ to_char(-485,’999S’) '485-’ to_char(-485,’999MI’) '485-’ to_char(485,’999MI’) '485’ to_char(485,’PL999’) '+485’ to_char(485,’SG999’) '+485’ to_char(-485,’SG999’) '-485’ to_char(-485,’9SG99’) '4-85’ to_char(-485,’999PR’) '<485>’ to_char(485,’L999’) 'DM 485 to_char(485,’RN’) ’ CDLXXXV’ to_char(485,’FMRN’) 'CDLXXXV’ to_char(5.2,’FMRN’) V to_char(482,’999th’) ’ 482nd’ to_char(485, '“Good number:”999’) 'Good number: 485’ to_char(485.8,'“Pre-decimal:”999” Post-decimal:” .999’) 'Pre-decimal: 485 Post-decimal: .800’ to_char(12,’99V999’) ’ 12000’ to_char(12.4,’99V999’) ’ 12400’ to_char(12.45, '99V9’) ’ 125’
三、Oracle中的to_number()函數(shù)(1)將char或varchar2類型的string轉(zhuǎn)換為一個number類型的數(shù)值:需要注意的是,被轉(zhuǎn)換的字符串必須符合數(shù)值類型格式,如果被轉(zhuǎn)換的字符串不符合數(shù)值型格式,Oracle將拋出錯誤提示;
(2)to_number和to_char恰好是兩個相反的函數(shù);to_number(varchar2 or char,’格式’) select to_number('000012134’) from dual; select to_number('88877’) from dual; (3)如果數(shù)字在格式范圍內(nèi)的話,就是正確的,否則就是錯誤的;如:select to_number('<script type="math/tex" id="MathJax-Element-2">12345.678', '</script>999999.99’) from dual; select to_number('<script type="math/tex" id="MathJax-Element-3">12345.678', '</script>999999.999’) from dual; (4)可以用來實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換;16進(jìn)制轉(zhuǎn)換為10進(jìn)制:select to_number('19f’,’xxx’) from dual; select to_number('f’,’xx’) from dual;
|
|