目录
1、ascii(str) 字符
转阿斯克码,多个字符只转第一个,字符比较大小就用阿斯克码。
详细的ASCII介绍可以参考《ASCII码字符对照表》这边文章的介绍!
比如:
select ascii('a'),ascii('A'),ascii('啊'),ascii('王'),ascii('!')
from dual;
2、chr(数) 阿斯克码→字符
比如:
select chr(65),chr(97)
from dual;
3、to_number(str)
纯数字的字符转成数值。比如:
select '123',to_number('123')
from dual;
4、to_date(str,'格式')
按照格式把数字转成日期型。
yyyy | 年 |
mm | 月 |
dd | 日 |
hh/hh12 | 12小时制 |
hh24 | 24小时制 |
mi | 分 |
ss | 秒 |
比如:
select to_date('2023-5-3','yyyy-mm-dd'),
to_date('2023-3-5','yyyy-dd-mm'),
to_date('2023-5-3 10:35:48','yyyy-mm-dd hh:mi:ss')
from dual;
也可以只写其中一部分:
yyyy | 本月的第一天 |
mm | 本年的这个月的第一天 |
dd | 本年本月的这一天 |
am/pm | 上午或者下午 |
hh/mi/ss | 本月1号 |
比如:
select to_date('2023','yyyy') 年,
to_date('5','mm') 月,
to_date('3','dd') 日
from dual;
举例:
--查询本月1号中午 12:00:01
select to_date('12:00:01','hh:mi:ss')
from dual
--查询今年的5月2号 下午1:30
select to_date('5-2 下午 1:30','mm-dd pm hh:mi')
from dual
总结:
日期的三种表达方式
1.date'年-月-日' date'2022-5-19'
2.to_date(str,'格式') to_date('20220519','yyyy-mm-dd')
3.'日-某月-年' '19-5月-2022' 不能写在select后可以写在where后
比如:
--查询1982-6-1之后入职的员工信息
select *
from emp
where hiredate>'1-6月-1982';
5、to_char(日期,'格式')
5.1提取日期中的元素
yyyy | 年 |
mm | 月 |
dd | 日 |
am/pm | 上午下午 |
hh/hh12 | 12小时制 |
hh24 | 24小时制 |
mi | 分 |
ss | 秒 |
day/dy | 星期(汉字) |
d | 星期(数字) |
1 | 星期日 |
2 | 星期一 |
3 | 星期二 |
4 | 星期三 |
5 | 星期四 |
6 | 星期五 |
7 | 星期六 |
sssss | 当前秒是今天的第几秒 |
ddd | 当前天是本年的第几天 |
如果想用汉字做为分隔符需要给汉字加上双引号
select to_char(date'2023-5-3','yyyy') a,
to_char(sysdate,'yyyy-mm-dd hh:mi:ss') b,
to_char(sysdate,'day') c,
to_char(sysdate,'d') d,
to_char(sysdate,'ddd') e,
to_char(date'2023-12-31','ddd') f
from dual;
比如:
--提取当前系统时间的 年 月 日 上下午 时 分 秒 星期
select to_char(sysdate,'yyyy"年"mm"月"dd"日" pm hh"时"mi"分"ss"秒" dy')
from dual;
--查询30天后是星期几
select to_char(sysdate+30,'dy')
from dual;
--查询所有闰年入职的员工信息
select *
from emp
where mod(to_char(hiredate,'yyyy'),4)=0 and
mod(to_char(hiredate,'yyyy'),100)!=0 or
mod(to_char(hiredate,'yyyy'),400)=0;
--或者
select *
from emp
where to_char(to_date(to_char(hiredate,'yyyy')||'-12-31',
'yyyy-mm-dd'),'ddd')=366;
--或者
select *
from emp
where to_date(to_char(hiredate,'yyyy')||'-3-1','yyyy-mm-dd')-
to_date(to_char(hiredate,'yyyy')||'-2-1','yyyy-mm-dd')=29;
--查询当前秒是今年的第几秒
select (to_char(sysdate,'ddd')-1)*24*60*60+
to_char(sysdate,'sssss')
from dual;
5.2to_char(数,'格式')
格式化数字,自带四舍五入。
9 | 占位符 |
0 | 占位符 |
$ | 美元 |
L | 本地货币 |
个位写0其他位置写9。比如:
select to_char(3.141592653,'9.9999') a,
to_char(3.14,'9.9999') b,
to_char(123456789,'999,999,999.999') c,
to_char(2400,'$9999') d,
to_char(0.14,'0.999') e,
to_char(0.14,'0000000000000.999') f,
to_char(1000.14,'9999999999999990.999') j
from dual;
举个栗子:
查询员工表员工工资增长12.55%后的工资,四舍五入保留2位小数每三位一隔带美元符号显示。
select trim(to_char(sal*(1+0.1255),'$999,999,990.99'))
from emp;
5.3to_char(参数)
把参数转成字符型。比如:
select to_char(123456),to_char(sysdate)
from dual;