1. 변환 함수
- 형변환이라고도 한다
- 숫자, 문자, 날짜의 데이터를 서로 형변환 한다.
- to_number : NUMBER포맷(서식)을 가진 VARCHAR2 -> NUMBER ex)'123' ->123
- to_char : NUMBER,DATE -> 원하는 포맷(서식)의 VARCHAR2
- to_date : DATE포맷(서식)을 가진 VARCHAR2 -> DATE
1-1 tochar(number)
to_char(number)
to_char(number,format)
두가지 형태로 사용할 수 있다.
**숫자 서식 지정 문자
0 : 숫자가 들어갈 자리를 확보, 남는 자리는 0으로 LPAD한다 |
9 : 숫자가 들어갈 자리를 확보, 남는 자리는 공백으로 LPAD한다 |
. : 소수점 구분 문자 추가(정수부, 소수부) |
, : 자릿수 구분 문자 추가 |
L : 세계통화기호 추가(설정된 통화를 따라감,Locale) |
$ : 통화기호 $추가 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
--날짜함수, DATETIME--
--sysdate
SELECT sysdate FROM dual; --오늘날짜 출력 20/3/24 :년원일
--날짜시간 타입->문자 타입(서식지정)
SELECT to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') now FROM dual;
--MONTHS_BETWEEN : 개월 수 차이
SELECT months_between('20-01-01','20-02-01') A FROM dual; --왼쪽-오른쪽 (1=1개월)
SELECT months_between('20-01-01','20-02-01') A,round(months_between('20-01-01','20-02-15'),2) B
FROM dual; --round로 반올림
--next_day : 지정된 요일이 다가오는 날짜 구하기
SELECT next_day(sysdate,'금') FROM dual;
--trunc 함수 (버리기)--trunc는 매개변수로 숫자or날짜가능 ** 중요(시간을00시로 버린다)
--trunc(datetime)
SELECT sysdate,to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),to_char(trunc(sysdate),'YYYY/MM/DD HH24:MI:SS')
FROM dual;
--20/03/24 2020/03/24 19:43:17 2020/03/24 00:00:00
--보이는 결과는 같지만 시간이 포함되어 서로 다른 값을 가진다
SELECT sysdate,trunc(sysdate) FROM dual;
-- 변환함수 --
--2개 방법
--to_char(number)
--to_char(number,fmt) : 서식문자를 이용한 변환 --서식지정
SELECT 12345 "0" from dual; --숫자타입
SELECT to_char(12345) "1" from dual; --문자타입
SELECT to_char(12345) "0", length(to_char(12345)) "1" from dual; --길이도 반환
SELECT length(12345) from dual; --문자로 안바꿔도 5가나온다(필요없다) --원래 숫자만 들어갈 수 있지만
자동형변환된다
--서식지정
SELECT to_char(12345,'99999') as ff FROM dual; --#이 나오면 입력값보다 작은값이어서 표시가 되지않는다는 오류
SELECT trim(to_char(12345,'999999999')) as ff FROM dual; --9는 숫자가 들어갈수있는 1자리 라는뜻이다
(없으면 공백)
SELECT to_char(12345,'000000000000') FROM dual; -- 0으로 전체 표현한 뒤 숫자를 채움
SELECT to_char(12345,'999000000000') FROM dual;
SELECT to_char(12345.6789)"1", to_char(12345.6789,'99999.9') "2" ,
to_char(12345.6789,'9999999.99')"3",
to_char(12345.6789,'9,999,999.99')"4", -->알아서 ,(comma)도 붙음
to_char(12345.6789,'9,999,999.999999') "5" -->소수점 아래 형식은 0으로 알아서 채워서 반환
FROM dual; --12345.6789 | 12345.7 --> 편하게 서식대로나온다
SELECT
to_char(12345) "1",
to_char(12345,'$9999999') "2", --> $를 앞에 붙여주면 $가 생긴다
to_char(12345,'L9999999') "3", --> L을 붙이면 ₩이 생긴다.(Locale의 약자)--언어와 환경에 대한 맞는 값이 반환
trim(to_char(12345,'L9999999')) "4"
FROM dual;
--to_char(datetime)
SELECT
-- sysdate,
-- to_char(sysdate,'SCC'), --21 --세기출력
-- to_char(to_date('369/1/7'),'SCC'), --날짜로 변환해서 넣으면 인식은 됨
-- to_char(sysdate,'YEAR'),--TWENTY TWENTY
-- to_char(sysdate,'Year'), --Twenty Twenty
-- to_char(sysdate,'YYYY'), --2020
-- to_char(sysdate,'YY'), --20
-- to_char(sysdate,'YYY'), --020
-- to_char(sysdate,'Y') --0
-- to_char(sysdate,'YYYYY') --20200 --0이 하나 더 붙었음 (추가적인 연도 X)그냥 YYYY Y랑 같다
-- to_char(sysdate,'MM'), --03
-- to_char(sysdate,'MONTH'), --3월
-- to_char(sysdate,'MON') --3월 (약어지만 한글이라 똑같다)
-- to_char(sysdate,'Q'), --1(분기를 나타냄)
-- to_char(sysdate,'DD'), --24 (한달단위 일수)
-- to_char(sysdate,'D'), --3(일주일 단위 일수)
-- to_char(sysdate,'DDD'), --084(일년단위 일수)
-- to_char(sysdate,'DAY'), --화요일
-- to_char(sysdate,'DY') --화
-- to_char(sysdate, 'HH'), --09
to_char(sysdate, 'HH12'), --09(시)
to_char(sysdate, 'HH24'), --21(시)
to_char(sysdate, 'MI'), --36(분)
to_char(sysdate, 'SS'), -- 25(초)
to_char(sysdate, 'AM'), -- 오후
to_char(sysdate, 'PM'), --오후
-- to_char(sysdate,'FF') --sysdate는 밀리초가 저장되어있지 않기때문에 에러가 발생한다
to_char(systimestamp,'FF') --483000(밀리초)
FROM dual;
SELECT systimestamp, sysdate FROM dual;--20/03/24 21:43:34.399000000 +09:00(timestamp) --타임존이 들어간다
--20/03/24(sysdate)
--많이 쓰는형태
SELECT
to_char(sysdate,'YYYY/MM/DD DAY HH24:MI:SS')
FROM dual;
--Q응용
SELECT * FROM emp WHERE to_char(hiredate,'Q')=3; --3분기 반환
|
반응형
'Web > Oracle SQL' 카테고리의 다른 글
[PROGRAMMER Level-4] 입양 시각 구하기(2)[Oracle] (0) | 2020.03.29 |
---|---|
[PROGRAMMERS Level 4] 우유와 요거트가 담긴 장바구니(Summer/Winter Coding(2019)) [Oracle] (0) | 2020.03.29 |
[SQL] 함수(Functions) (0) | 2020.03.27 |
[SQL] 정의와 기본문법 (0) | 2020.03.27 |
[mySQL] Workbench에서 csv 파일 import 하기 [Mac] (4) | 2019.11.26 |