+-
【PL/SQL】转换函数(日期/字符串/数字)
首页 专栏 oracle 文章详情
0

【PL/SQL】转换函数(日期/字符串/数字)

Simon Gan 发布于 5 月 11 日

看完这章你会学到以下内容

转换函数有那几种,通常用得最多的是那个? 为什么要用转换函数? 各自转换的关系,适用条件是什么?

数据类型有三类:数字,字符,日期
对应就用转换它们三种类型的函数 :转换函数!

To_Date 转日期
Date 强制转换,里面一定要有'-'才能转换,数字只会出现错误,例如:

SELECT DATE'2019-01-01' FROM DUAL; --- 强制转换为日期格式 SELECT TO_DATE('2019-01-01','YYYY/MM/DD') FROM DUAL; SELECT TO_DATE('2019-01-01','YYYY-MM-DD') FROM DUAL; SELECT TO_DATE('2019-01-01','YYYYMMDD') FROM DUAL; ---- 错误, 日期转换只有以上两种形式 注意:字符或数字中的年月日必须是日期范围内的值 SELECT TO_DATE('2019-13-08','YYYY-MM-DD'), -- 月份不对 TO_DATE(20190732,'YYYY-MM-DD') -- 天数不对 FROM DUAL; -- 字符日期中有-或/转化为日期类型必须加-或/ SELECT TO_DATE('2019-07-08','YYYYMMDD'), -- 错误 TO_DATE(20190708,'YYYY-MM-DD') FROM DUAL; --- 成功

To_Char() 转换为字符

SELECT TRUNC(TO_DATE(SYSDATE),'Y') FROM DUAL; SELECT TO_CHAR(DATE'2019-08-30','YYYY'), -- '2019' TO_CHAR(DATE'2019-08-30','YYYYMM'), -- '201908' TO_CHAR(DATE'2019-08-30','WW'), -- '35' 第35周 TO_CHAR(DATE'2019-08-30','IW'), -- '35' 第35周(自然周) TO_CHAR(DATE'2019-08-30','Q'), -- '3' 第3季度 TO_CHAR(DATE'2019-08-30','MM'), -- '08' TO_CHAR(DATE'2019-08-30','DD'), -- '30' TO_CHAR(DATE'2019-08-30','D') -- '6' 当周的第几天(星期天为第一天) FROM DUAL;

To_Number() 转化为数字

SELECT TRUNC(TO_DATE(SYSDATE),'Y') FROM DUAL; SELECT TO_CHAR(DATE'2019-08-30','YYYY'), -- '2019' TO_CHAR(DATE'2019-08-30','YYYYMM'), -- '201908' TO_CHAR(DATE'2019-08-30','WW'), -- '35' 第35周 TO_CHAR(DATE'2019-08-30','IW'), -- '35' 第35周(自然周) TO_CHAR(DATE'2019-08-30','Q'), -- '3' 第3季度 TO_CHAR(DATE'2019-08-30','MM'), -- '08' TO_CHAR(DATE'2019-08-30','DD'), -- '30' TO_CHAR(DATE'2019-08-30','D') -- '6' 当周的第几天(星期天为第一天) FROM DUAL;

PS: 日期转数字的话:先转为字符,然后再转发为数字,最后是靠右显示。
v2-b694f9eef45a6539450a1ab25515efad_720w.jpg

plsql oracle
阅读 43 发布于 5 月 11 日
收藏
分享
本作品系原创, 采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
大数据工程师养成记
关注专栏
avatar
Simon Gan
15 声望
5 粉丝
关注作者
0 条评论
得票数 最新
提交评论
你知道吗?

注册登录
avatar
Simon Gan
15 声望
5 粉丝
关注作者
宣传栏
目录

看完这章你会学到以下内容

转换函数有那几种,通常用得最多的是那个? 为什么要用转换函数? 各自转换的关系,适用条件是什么?

数据类型有三类:数字,字符,日期
对应就用转换它们三种类型的函数 :转换函数!

To_Date 转日期
Date 强制转换,里面一定要有'-'才能转换,数字只会出现错误,例如:

SELECT DATE'2019-01-01' FROM DUAL; --- 强制转换为日期格式 SELECT TO_DATE('2019-01-01','YYYY/MM/DD') FROM DUAL; SELECT TO_DATE('2019-01-01','YYYY-MM-DD') FROM DUAL; SELECT TO_DATE('2019-01-01','YYYYMMDD') FROM DUAL; ---- 错误, 日期转换只有以上两种形式 注意:字符或数字中的年月日必须是日期范围内的值 SELECT TO_DATE('2019-13-08','YYYY-MM-DD'), -- 月份不对 TO_DATE(20190732,'YYYY-MM-DD') -- 天数不对 FROM DUAL; -- 字符日期中有-或/转化为日期类型必须加-或/ SELECT TO_DATE('2019-07-08','YYYYMMDD'), -- 错误 TO_DATE(20190708,'YYYY-MM-DD') FROM DUAL; --- 成功

To_Char() 转换为字符

SELECT TRUNC(TO_DATE(SYSDATE),'Y') FROM DUAL; SELECT TO_CHAR(DATE'2019-08-30','YYYY'), -- '2019' TO_CHAR(DATE'2019-08-30','YYYYMM'), -- '201908' TO_CHAR(DATE'2019-08-30','WW'), -- '35' 第35周 TO_CHAR(DATE'2019-08-30','IW'), -- '35' 第35周(自然周) TO_CHAR(DATE'2019-08-30','Q'), -- '3' 第3季度 TO_CHAR(DATE'2019-08-30','MM'), -- '08' TO_CHAR(DATE'2019-08-30','DD'), -- '30' TO_CHAR(DATE'2019-08-30','D') -- '6' 当周的第几天(星期天为第一天) FROM DUAL;

To_Number() 转化为数字

SELECT TRUNC(TO_DATE(SYSDATE),'Y') FROM DUAL; SELECT TO_CHAR(DATE'2019-08-30','YYYY'), -- '2019' TO_CHAR(DATE'2019-08-30','YYYYMM'), -- '201908' TO_CHAR(DATE'2019-08-30','WW'), -- '35' 第35周 TO_CHAR(DATE'2019-08-30','IW'), -- '35' 第35周(自然周) TO_CHAR(DATE'2019-08-30','Q'), -- '3' 第3季度 TO_CHAR(DATE'2019-08-30','MM'), -- '08' TO_CHAR(DATE'2019-08-30','DD'), -- '30' TO_CHAR(DATE'2019-08-30','D') -- '6' 当周的第几天(星期天为第一天) FROM DUAL;

PS: 日期转数字的话:先转为字符,然后再转发为数字,最后是靠右显示。
v2-b694f9eef45a6539450a1ab25515efad_720w.jpg