• Oracle中关于to_date(),to_char(),to_number()函数的用法


    一、Oracle中的to_date()函数 

    1、to_date()与24小时制表示法及mm分钟的显示: 

    在使用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; 

    原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。 

    select to_date(‘2005-01-01 13:14:20’,’yyyy-MM-dd HH24:mi:ss’) from dual;

    实例:

    (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; 

    //星期四, 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参数含义 

    (1)日期格式参数含义说明 

    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 年中的第几个星期

    (2)日期时间间隔操作 

    当前时间减去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

    (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 

    参考oracle的相关关文档(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函数的使用 

    select trunc(sysdate ,’YEAR’) from dual 

    select trunc(sysdate ) from dual 

    select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual

    (6)oracle有毫秒级的数据类型 

    –返回当前时间 年月日小时分秒毫秒 

    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; 

    二、Oracle中的to_char()函数 

    (1)用作日期转换: 

    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)处理数字: 

    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)用于进制转换:将10进制转换为16进制; 

    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()函数 

    (1)将char或varchar2类型的string转换为一个number类型的数值: 

    需要注意的是,被转换的字符串必须符合数值类型格式,如果被转换的字符串不符合数值型格式,Oracle将抛出错误提示;

    (2)to_number和to_char恰好是两个相反的函数; 

    to_number(varchar2 or char,’格式’) 

    select to_number(‘000012134’) from dual; 

    select to_number(‘88877’) from dual;

    (3)如果数字在格式范围内的话,就是正确的,否则就是错误的;如: 

    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)可以用来实现进制转换;16进制转换为10进制: 

    select to_number(‘19f’,’xxx’) from dual; 

    select to_number(‘f’,’xx’) from dual; 

  • 相关阅读:
    在VS2010下,用QT,创建一个Opencv应用程序
    SNR(信噪比)与 特定分布噪声的关系初探
    Qt学习笔记_FindDialog
    关于reduced rank regression的一些看法
    实时摄像头人眼跟踪: RealTime Tracking Of Human Eyes Using a Webcam
    L1_APG_Tracker实现代码剖析
    CVPR2013 感兴趣论文汇总
    使用PowerDesigner 15对现有数据库进行反向工程(图解教程)(转)
    大数据量高并发的数据库优化
    rtmp和rtsp的区别
  • 原文地址:https://www.cnblogs.com/yysbolg/p/13716091.html
Copyright © 2020-2023  润新知