Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数

oracle系列文章:
【1】Oracle数据库:啥是oracle数据库?你为啥要学oracle? 【2】Oracle数据库:oracle 11g安装教程,已安装好的oracle各个文件夹的作用,oracle用户权限怎么样 【3】Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法 【4】Oracle数据库:创建表空间,创建新用户,给用户分配对象、角色和系统权限,登录新用户建表 【5】Oracle数据库:链接配置,包括sqlnet.ora里面的transnames.ora配置数据库标识符SID,listener暂时简单了解 【6】Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库 【7】Oracle数据库:oracle字符类型、数字类型、创建表表名的命名规则 【8】Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写 【9】Oracle数据库:表的关系:一对多,一对一,多对多,一一继承和修改的关系,表不是重点,重点是数据和约束关系 【10】Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作 【11】Oracle数据库:约束行限制where语句,判断条件,比较条件,字符串日期格式,in,like,escape,null语句 【12】Oracle数据库:逻辑运算and,or,not和各种运算的优先级控制 【13】Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例 【14】Oracle数据库:oracle函数,单行函数,多行函数,upper,lower,initcap,字符串函数 【15】Oracle数据库:数字函数,日期函数,round,trunc,mod,months_between,add_months,next_day,last_day,sysdate


文章目录

  • Oracle数据库:oracle数据类型转换to_char()日期和数字转字符,to_number()字符转数字,to_date()字符转日期函数
  • @[TOC](文章目录)
  • oracle数据类型转换
  • 显示数据类型转换
  • 数字和日期转字符
  • to_char()将数字转化为字符串
  • 字符转数字
  • 字符转日期
  • 总结

oracle数据类型转换

postgresql 将数字转换为整数_postgresql 将数字转换为整数


postgresql 将数字转换为整数_postgresql 将数字转换为整数_02


日期,其实,已经把它隐式转换了

我们给了日月年

hire_date实际上是日期date类型

我们给了字符串,实际上oracle会自动转

postgresql 将数字转换为整数_类型转换函数_03

SQL> select employee_id from employees where employee_id='206';

EMPLOYEE_ID
-----------
        206

SQL> select employee_id from employees where employee_id=206;

EMPLOYEE_ID
-----------
        206

你看我们给了字符串,或者数字
它都会自动给你转化为number类型的

这就是隐式类型的转换很舒服——但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换
但是写代码千万不要用隐式转换

为什么待会讲!!!

postgresql 将数字转换为整数_sql_04


这里要是表达式赋值转换,是只能单向的

不支持反过来

postgresql 将数字转换为整数_oracle_05


postgresql 将数字转换为整数_数据库_06


所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!
所以,千万不要用隐式转换!!!!!

知道就行了

显示数据类型转换

postgresql 将数字转换为整数_数据库_07


postgresql 将数字转换为整数_数据库_08

数字和日期转字符

postgresql 将数字转换为整数_数据库_09


我猜有第二个参数,就是日期格式

没有第二个参数,那就是数字

postgresql 将数字转换为整数_sql_10


postgresql 将数字转换为整数_sql_11

month月全名
mon月简写
mm月数字

dy星期几的简写
day星期几
dd是一个月的哪天,号数

SQL> select to_char(sysdate,'yyyy') from dual;

TO_CHAR(SYSDATE,'YYYY')
-----------------------
2022

SQL> select to_char(sysdate,'year') from dual;

TO_CHAR(SYSDATE,'YEAR')
------------------------------------------
twenty twenty-two

SQL> select to_char(sysdate,'mm') from dual;

TO_CHAR(SYSDATE,'MM')
---------------------
10

SQL> select to_char(sysdate,'month') from dual;

TO_CHAR(SYSDATE,'MONTH')
------------------------
10月

SQL> select to_char(sysdate,'mon') from dual;

TO_CHAR(SYSDATE,'MON')
----------------------
10月

SQL> select to_char(sysdate,'dy') from dual;

TO_CHAR(SYSDATE,'DY')
---------------------
星期二

SQL> select to_char(sysdate,'day') from dual;

TO_CHAR(SYSDATE,'DAY')
----------------------
星期二

SQL> select to_char(sysdate,'dd') from dual;

TO_CHAR(SYSDATE,'DD')
---------------------
25

这都号好说

postgresql 将数字转换为整数_postgresql 将数字转换为整数_12


等等,各种骚

postgresql 将数字转换为整数_数据库_13

SQL> select to_char(sysdate,'AM') from dual;

TO_CHAR(SYSDATE,'AM')
---------------------
下午

SQL> select to_char(sysdate,'HH') from dual;

TO_CHAR(SYSDATE,'HH')
---------------------
06

SQL> select to_char(sysdate,'HH12') from dual;

TO_CHAR(SYSDATE,'HH12')
-----------------------
06

SQL> select to_char(sysdate,'MI') from dual;

TO_CHAR(SYSDATE,'MI')
---------------------
49

SQL> select to_char(sysdate,'ss') from dual;

TO_CHAR(SYSDATE,'SS')
---------------------
23

postgresql 将数字转换为整数_sql_14

SQL> select to_char(sysdate,'HH:MI::ss AM') from dual;

TO_CHAR(SYSDATE,'HH:MI::SSAM')
------------------------------
06:51::16 下午

你可以给常量串,做拼接

10月25日

SQL> select to_char(sysdate,'dd "of" mm') from dual;

TO_CHAR(SYSDATE,'DD"OF"MM')
---------------------------
25 of 10

还能拼数字前缀

dd天

spth

spell 出th


postgresql 将数字转换为整数_sql_15

SQL> select to_char(sysdate,'ddspth') from dual;

TO_CHAR(SYSDATE,'DDSPTH')
-------------------------
twenty-fifth

SQL> select to_char(sysdate,'ddth') from dual;

TO_CHAR(SYSDATE,'DDTH')
-----------------------
25th

SQL> select to_char(sysdate,'ddsp') from dual;

TO_CHAR(SYSDATE,'DDSP')
-----------------------
twenty-five

25号的各种写法

SQL> select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;

TO_CHAR(SYSDATE,'YYYY"年"MM"月"DD"日"')
------------------------------------
2022年10月25日

SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DD')
-----------------------------
2022-10-25

postgresql 将数字转换为整数_数据库_16


没有小时分钟秒,那就是默认12:00

SQL> select last_name, to_char(hire_date,'yyyy"年"mm"月"dd"日"hh:mi:ss am') from employees;

LAST_NAME                 TO_CHAR(HIRE_DATE,'YYYY"年"MM"月"DD"日"HH:MI:SSAM')
------------------------- ------------------------------------------------
King                      2003年06月17日12:00:00 上午
Kochhar                   2005年09月21日12:00:00 上午
De Haan                   2001年01月13日12:00:00 上午
Hunold                    2006年01月03日12:00:00 上午
Ernst                     2007年05月21日12:00:00 上午
Austin                    2005年06月25日12:00:00 上午
Pataballa                 2006年02月05日12:00:00 上午

反正你要转的各种格式,要熟悉,用法写好就行了
挺爽的

希望考试别考太复杂了

to_char()将数字转化为字符串

可能需要加千位符号,
这时候就需要将数字,放入字符

postgresql 将数字转换为整数_oracle_17


关键就是第二个模板参数

看样例

9是占位

SQL> select to_char(346.555,'999,999.99') from dual;

TO_CHAR(346.555,'999,999.99')
-----------------------------
     346.56

格式的长度,可以大于你真实数字的长度

但是模板不够长,就gg

SQL> select to_char(123456346.555,'999,999.99') from dual;

TO_CHAR(123456346.555,'999,999.99')
-----------------------------------
###########

所以格式不匹配就gg
最好模板格式的长度要大于等于实际数字的长度
懂?

SQL> select to_char(56346.555,'099,999.99') from dual;

TO_CHAR(56346.555,'099,999.99')
-------------------------------
 056,346.56

如果是0,就是强制转0

SQL> select to_char(56346.555,'$99,999.99') from dual;

TO_CHAR(56346.555,'$99,999.99')
-------------------------------
 $56,346.56

SQL> select to_char(56346.555,'L99,999.99') from dual;

TO_CHAR(56346.555,'L99,999.99')
-------------------------------
        ¥56,346.56

加美元和人民币

FM是去掉前后空格

SQL> select to_char(46.555,'99,999.99') from dual;

TO_CHAR(46.555,'99,999.99')
---------------------------
     46.56

SQL> select to_char(46.555,'fm99,999.99') from dual;

TO_CHAR(46.555,'FM99,999.99')
-----------------------------
46.56

前面的控制gg了

postgresql 将数字转换为整数_数据库_18

SQL> select last_name,to_char(salary,'fm999,999,999.00') from employees where last_name='Whalen';

LAST_NAME                 TO_CHAR(SALARY,'FM999,999,999.00')
------------------------- ----------------------------------
Whalen                    4,400.00

加美元

SQL> select last_name,to_char(salary,'fm$999,999,999.00') from employees where last_name='Whalen';

LAST_NAME                 TO_CHAR(SALARY,'FM$999,999,999.00')
------------------------- -----------------------------------
Whalen                    $4,400.00

很容易的

字符转数字

postgresql 将数字转换为整数_数据库_19


格式和上面的数字转字符串一样

postgresql 将数字转换为整数_类型转换函数_20


不过就是数字而已

SQL> select to_number('$456.84','$999.99') from dual;

TO_NUMBER('$456.84','$999.99')
------------------------------
                        456.84

后面的格式要转化的字符的格式
前面的格式就是$999.99的格式
长度也是要长的

当年你把456.84转字符的时候用的就是这个格式:$999.99
逆转也是一样的道理
这些比java和Python复杂,但是本质就一样

postgresql 将数字转换为整数_postgresql 将数字转换为整数_21

SQL> select to_number('$34346.84','$99999.99') from dual;

TO_NUMBER('$34346.84','$99999.99')
----------------------------------
                          34346.84

很简单的

字符转日期

postgresql 将数字转换为整数_oracle_22


日期转字符

字符转日期

格式一样

SQL> select to_date('2022','fmyyyy') from dual;

TO_DATE('2022','FMYYYY')
------------------------
2022/10/1

SQL> select to_date('2022-03-09','fmyyyy-mm-dd') from dual;

TO_DATE('2022-03-09','FMYYYY-MM-DD')
------------------------------------
2022/3/9

SQL> select to_date('2022-03-09 11:57','fmyyyy-mm-dd hh:mi') from dual;

TO_DATE('2022-03-0911:57','FMYYYY-MM-DDHH:MI')
----------------------------------------------
2022/3/9 11:57:00

字符串转日期,返回就是date类型

postgresql 将数字转换为整数_sql_23

SQL> select to_date('2022-03-09 11:30','fmyyyy-mm-dd hh:mi') from dual;

TO_DATE('2022-03-0911:30','FMYYYY-MM-DDHH:MI')
----------------------------------------------
2022/3/9 11:30:00

灰常容易了

SQL> select to_date('2022年3月9日 11点30分','fmyyyy"年"mm"月"dd"日"hh"点"mi"分"') from dual;

TO_DATE('2022年3月9日11点30分','FMYYYY"年"MM"月"DD"日"HH"点"MI"分"')
----------------------------------------------------------
2022/3/9 11:30:00

汉字要用点
不能用时
挺烦的这
还是上面那种不用汉字的格式舒服


总结

提示:重要经验:

1)
2)学好oracle,即使经济寒冬,整个测开offer绝对不是问题!同时也是你考公网络警察的必经之路。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。