隐式数据类型转换
(1)varchar2变长/char定长——>number,例如:'123'——>123
(2)varchar2/char——>date,例如:'25-4月-15'——>'25-4月-15'
(3)number——>varchar2/char,例如:123——>'123'
(4)date——>varchar2/char,例如:'25-4月-15'——>'25-4月-15'
oracle如何隐式转换
- “=”号两边的类型是否相同
- 如果“=”号两边的类型不同,尝试的去做转换
- 在转换时,要确保合法合理,否则转换会失败,例如:12月不会有32天,一年中不会有13月
显式数据类型转换
TO_CHAR函数对日期的转换
格式:TO_CHAR(日期, '转换格式');
转换格式
year:y,表示年的最后一位;yy,表示年的最后2位;yyy,表示年的最后3位;yyyy,用4位数表示年。
month:mm,用2位数字表示月;mon,简写形式比如11月或者nov;month,全称比如11月或者november。
day:dd,表示当月第几天;ddd,表示当年第几天;dy,当周第几天,简写形式比如星期五或者fri;day,当周第几天,全写比如星期五或者friday。
hour:hh,2位数表示小时12小时;hh24,2位数表示小时24小时。
minute:mi,2位数表示分钟。
second:ss,2位数表示秒60进制。
季度:q,一位数表示季度(1 - 4)。
周:ww,用来表示当年第几周;w,用来表示当月第几周。
24小时制下的时间范围(00:00:00 - 23:59:59)
12小时制下的时间范围(1:00:00 - 12:59:59)
使用双引号向日期中添加字符
--显示如下格式:2015 年 04 月 25 日 星期六
select to_char(sysdate,'yyyy "年" mm "月" dd "日" day') from dual;
--显示如格式:2015-04-25今天是星期六 15:15:15
select to_char(sysdate,'yyyy-mm-dd"今天是"day hh24:mi:ss') from dual;
select to_char(sysdate,'yyyy-mm-dd"今天是"day HH12:MI:SS AM') from dual;
TO_CHAR 函数对数字的转换
格式:TO_CHAR(数值, '转换格式');
转换格式
9 |
数字,0到9中任意一个值 |
0 |
零 |
$ |
美元符 |
L |
本地货币符号 |
. |
小数点 |
, |
千位符 |
--显示如下格式:$1,234
select to_char(1234,'$9,999') from dual;
--显示如下格式:¥1,234
select to_char(1234,'L9,999') from dual;
TO_NUMBER 函数将字符转换成数字
格式:
TO_NUMBER(varchar2|char);
TO_NUMBER(varchar2|char , '转换格式');
--将字符串‘123’转成数字123
select to_number('123') from dual;
TO_DATE 函数将字符转换成日期
格式:
TO_DATE(varchar2|char);
TO_DATE(varchar2|char , '转换格式');
--查询1980年12月17日入职的员工
select * from emp where hiredate = to_date('1980年12月17日','yyyy"年"mm"月"dd"日"');
select * from emp where hiredate = to_date('1980#12#17','yyyy"#"mm"#"dd');
select * from emp where hiredate = to_date('1980-12-17','yyyy-mm-dd');
注意
select '123' + 123 from dual; --246
select '123' || 123 from dual; --123123