Oracle中的单行函数-转换函数

目录

1、ascii(str) 字符

2、chr(数) 阿斯克码→字符

3、to_number(str)

4、to_date(str,'格式')

5、to_char(日期,'格式')

5.1提取日期中的元素 

5.2to_char(数,'格式')

5.3to_char(参数)


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;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树贤森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值