• SQL转换函数to_char/to_date/to_number


    日期型->字符型转换函数to_char(d [,fmt]) 函数to_char(d [,fmt])用于将日期型数值转换为字符串(varchar2类型),其中参数d用于指定日期值,fmt用于指定要转换成的字符串的格式,也称模式串。如不给出参数fmt则系统会缺省采用与所在语言环境相关的默认格式。模式串中的字母(a~z, A~Z)也称日期模式符,被保留使用——相当于关键字,其中大部分被赋予特定含义,在对日期型数字的转换/解析过程中这些模式符将被替换成相应的时间域信息,表4-5列出了常用格式符及其含义。
    常用日期模式符
    格式符 说明 举例
    yyyy 年份 2008
    mm 用数字显示月份 02
    dd 在当月中是第几天 28
    day 星期几 星期五
    am / pm 显示上午/下午 上午
    hh / hh12 / hh24 小时 / 12小时制 / 24小时制 2:30 14:30
    mi 分钟 30
    ss 秒钟 46

    SELECT EMPNO,HIREDATE,TO_CHAR(HIREDATE),TO_CHAR(HIREDATE,'YYYY-MM-DD') FROM EMP;
    EMPNO HIREDATE TO_CHAR(HIREDATE) TO_CHAR(HIREDATE,'YYYY-MM-DD')
    7369 1980/12/17 17-DEC-80 1980-12-17
    7499 1981/2/20 20-FEB-81 1981-02-20
    7521 1981/2/22 22-FEB-81 1981-02-22
    7566 1981/4/2 02-APR-81 1981-04-02
    7654 1981/9/28 28-SEP-81 1981-09-28
    7698 1981/5/1 01-MAY-81 1981-05-01
    7782 1981/6/9 09-JUN-81 1981-06-09
    7788 1987/4/19 19-APR-87 1987-04-19
    7839 1981/11/17 17-NOV-81 1981-11-17
    7844 1981/9/8 08-SEP-81 1981-09-08
    7876 1987/5/23 23-MAY-87 1987-05-23
    7900 1981/12/3 03-DEC-81 1981-12-03
    7902 1981/12/3 03-DEC-81 1981-12-03
    7934 1982/1/23 23-JAN-82 1982-01-23

    SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MI:SS') FROM DUAL; --2014-06-14 05:54:50
    SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH:MI:SS') FROM DUAL; --2014/06/14 05:54:38
    SELECT TO_CHAR(SYSDATE,'FMYYYY/MM/DD HH:MI:SS') FROM DUAL; --在模式串开头使用fm标记以去掉数字前面的零2014/6/14 5:55:56
    SELECT TO_CHAR(SYSDATE,'YYYY "YEAR" MM "MONTH" DD "WEEK" DAY AM HH:MI:SS') FROM DUAL --2014 YEAR 06 MONTH 14 WEEK SATURDAY PM 05:59:25 --2014 YEAR 06 MONTH 14 DAY SATURDAY PM 05:59:25 --------语句中输入的是AM,结果显示为PM?Oracle会智能判断应该显示什么?

    字符型->日期型转换函数to_date(char [,fmt]) 和前面的to_char()函数相对应,函数to_char(char[,fmt])用于将字符串型数值转换为日期型(DATE类型),其中参数char用于指定匹配于日期数据的字符串,模式串fmt用于指定日期模式、即按照何种模式解析前面的字符串,如不给出参数fmt则会按照当前语言环境相关的默认格式进行解析。例如:
    DROP TABLE users;
    CREATE TABLE users(name VARCHAR2(20), birth DATE);
    INSERT INTO users VALUES('张三', '24-2月-2009');
    INSERT INTO users VALUES('张三', to_date('24-2月-2009'));
    INSERT INTO users VALUES('李四', to_date('2016-08-30', 'yyyy-mm-dd '));
    其中,前两条INSERT语句完全等价,第一条语句中也是隐含调用了to_date()函数——先将匹配系统默认日期模式的字符串'24-2月-2009'转换为DATE类型、再执行新数据记录的插入操作。但如果字符串的格式不匹配则会出错。

    数值型->字符型转换函数to_char(n [,fmt]) 函数to_char(n [,fmt])可将数字值转换为VARCHAR2型数据,通常用于数字值的格式化显示。其中参数n用于指定数字值,参数fmt用于指定转换成的格式,其性质及用法与前面的日期模式串类似,具体如表4-6所示。
    表4-6 数字模式符
    格式符 说明
    9 代表一位数字,忽略前导的0
    0 代表一位数字,强制显示0(如果位数不足,则用0补齐)
    $ 放置一个美圆符$
    L 放置一个本地货币符
    C 放置一个国际货币符号
    . 小数点
    , 千位指示符

    SELECT 12345.67, TO_CHAR(12345.67) AS C1, TO_CHAR(12345.67,'$999,999.0000') AS C2, TO_CHAR(12345.67,'$000,000,0000') AS C3 FROM DUAL;
    12345.67 C1 C2 C3
    12345.67 12345.67 $12,345.6700 $000,001,2346

    字符型->数值型转换函数to_number(char [,fmt]) 与前述的to_char(n [,fmt])相对应,函数to_number(char [,fmt])的功能则是将字符串型数值转换/解析为数值型(NUMBER类型)。其中参数char用于指定要解析的字符串,参数fmt用于指定按照字符串的格式。如不给出参数fmt则会按照当前语言环境相关的默认格式进行解析。例如:
    SELECT to_number('12345.678901') FROM dual;
    SELECT to_number('$12,345.6789', '$99,999.0000') FROM dual;
    DROP TABLE t1;
    CREATE TABLE t1(name VARCHAR2(20), sal NUMBER);
    INSERT INTO t1 values('王五', to_number('$12,345.6789', '$99,999.0000'));
    SELECT * FROM t1;

  • 相关阅读:
    html5 localstorage本地存储
    如何在源码里修改openwrt root密码
    openwrt-scripts/config/mconf: Syntax error: “(” unexpected错误解决
    HTML5获取地理位置信息
    Mysql 查看连接数,状态 最大并发数(赞)
    晨读笔记:CSS3选择器之属性选择器
    CSS3选择器之属性选择器
    js判断浏览器类型
    javascript json字符串与对象相互转换
    手机端html5触屏事件(touch事件)
  • 原文地址:https://www.cnblogs.com/rusking/p/3788581.html
Copyright © 2020-2023  润新知