在使用Oracle的to_date函數來作日期轉換時,不少Java程序員也許會直接的採用「yyyy-MM-dd HH:mm:ss」的格式做爲格式進行轉換,可是在Oracle中會引發錯誤:「ORA 01810 格式代碼出現兩次」。 程序員
如:select to_date(‘2005-01-01 13:14:20’,’yyyy-MM-dd HH24:mm:ss’) from dual; oracle
緣由是SQL中不區分大小寫,MM和mm被認爲是相同的格式代碼,因此Oracle的SQL採用了mi代替分鐘。 函數
select to_date(‘2005-01-01 13:14:20’,’yyyy-MM-dd HH24:mi:ss’) from dual;ip
實例:ci
(1)select to_char(sysdate,’yyyy-MM-dd HH:mi:ss’)from dual; 採用12小時制 文檔
//2018-05-17 10:54:21字符串
(2)select to_char(sysdate,’Day, HH12:MI:SS’) from dual; string
//星期四, 11:11:26date
(3)select to_char(sysdate,’Day, yyyy-MM-dd HH:mi:ss’) from dual; select
//星期四, 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
D 一週中的星期幾
DAY 天的名字,使用空格填充到9個字符
DD 月中的第幾天
DDD 年中的第幾天
DY 天的簡寫名
IW ISO標準的年中的第幾周
IYYY ISO標準的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最後三位,兩位,一位
HH 小時,按12小時計
HH24 小時,按24小時計
MI 分
SS 秒
MM 月
Mon 月份的簡寫
Month 月份的全名
W 該月的第幾個星期
WW 年中的第幾個星期
當前時間減去7分鐘的時間
select sysdate,sysdate - interval ’7’ MINUTE from dual
當前時間減去7小時的時間
select sysdate - interval ’7’ hour from dual
當前時間減去7天的時間
select sysdate - interval ’7’ day from dual
當前時間減去7月的時間
select sysdate,sysdate - interval ’7’ month from dual
當前時間減去7年的時間
select sysdate,sysdate - interval ’7’ year from dual
時間間隔乘以一個數字
select sysdate,sysdate - 8 *interval ’2’ hour from dual
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
參考oracle的相關關文檔(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
具體用法和上面的to_char差很少。
select trunc(sysdate ,’YEAR’) from dual
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual
–返回當前時間 年月日小時分秒毫秒
select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;
–返回當前時間的秒毫秒,能夠指定秒後面的精度(最大=9)
select to_char(current_timestamp(9),’MI:SSxFF’) from dual;
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;
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;
select TO_CHAR(123,’</script>99,999.9’) from dual;
select to_char(4567,’xxxx’) from dual;
select to_char(123,’xxx’) from dual;
輸入 輸出
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(varchar2 or char,’格式’)
select to_number(‘000012134’) from dual;
select to_number(‘88877’) from dual;
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;
select to_number(‘19f’,’xxx’) from dual;
select to_number(‘f’,’xx’) from dual;