oracle-sql转换函数

概述

本文讲解 转换函数,和编程语言类似,字符串转成数字,数字转字符串,字符串转日期,日期格式化成字符串

to_number

将 字符 转换成 数字

语法

to_number(字符类型的数字)
select to_number('13')+to_number('14') from dual;
字符串可隐式转换成数字
select '13'+'14' from dual

to_char

将 数字、日期 转换为 字符

语法

to_char(数字/日期)

将数字转换为货币格式

select to_char(sal,'L999,999,999') from emp;

注意:

  • 9表示位置占位
  • L表示人民币符号
  • $表示美元符号

0补位

select to_char(sal,'000,000,000.00') from emp;
 000,000,800.00

位数不够时,前面用0补位

日期转换为字符,并进行格式化

oracle数据库日期的格式是:日月年,比如:

select * from emp

中的hiredate字段,不符合中国人的习惯,需要进行对日期进行格式化

语法
to_char(列名,日期格式)

注意:

  1. 列名的值必须符合日期格式

常用格式:

  • yyyy-mm-dd
  • yyyy-mm-dd hh24:mi:ss
  • yyyy/mm/dd
  • yyyy/mm/dd hh24:mi:ss
  • yyyy”年”mm”月”dd”日”

例子:

  1. 将查询入职日期的格式转为yyyy-mm-dd格式
    select to_char(hiredate,'yyyy-mm-dd') from emp
    
  2. 转换成中文的 yyyy年mm月dd日:
    select ename,to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp
    
  3. 只获取年
    select to_char(hiredate,'yyyy') from emp;
    
  4. 获取系统时间
    返回星期
    select to_char(sysdate,’D’) from dual;
    
    返回月
    select to_char(sysdate,’MM’) from dual;
    
FM消除前置的零和空格
select to_char(hiredate,'fmyyyy-mm-dd') from emp;

to_date

将 字符 转换为 日期

语法

to_date(列名,日期格式)
注意:

列名中的值必须符合日期格式

常用格式:
  • yyyy-mm-dd
  • yyyy-mm-dd hh24:mi:ss
  • yyyy/mm/dd
  • yyyy/mm/dd hh24:mi:ss

例子

  1. 查询入职日期在1981年6月1日之后的员工信息:
    错误写法:

    select * from emp where hiredate>'1981-6-1'
    

    正确写法:

    select * from emp where hiredate>to_date('1981-06-01','yyyy-mm-dd')
    

    注意: hiredate列是日期类型,所以要将 值 转为 日期类型,再进行比较

  2. 演示

    select to_date('2019-03-10 10:30:05','yyyy-mm-dd hh24:mi:ss') from dual
    

练习

  1. 查询员工信息,聘用日期格式成:4位年-2位月-2位4日

原文出处:/show_1EF34aopkSpI.html