- 轉換函數有那幾種,通常用得最多的是那個?
- 為什麼要用轉換函數?
- 各自轉換的關系,适用條件是什麼?
資料類型有三類:數字,字元,日期
對應就用轉換它們三種類型的函數 :轉換函數!
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:
日期轉數字的話:先轉為字元,然後再轉發為數字,最後是靠右顯示。