고래씌
[Oracle] 2-4. DML(SELECT) - 함수_단일행 함수 ④ (형변환 함수) 본문
1. 형변환 함수
▶ NUMBER/DATE => CHARACTER
2. TO_CHAR(NUMBER/DATE, 포맷)
: 숫자형 또는 날짜형 데이터를 문자형 타입으로 변환(포맷에 맞춰서)
▶ 숫자를 문자열로
▶ 급여정보를 3자리마다 , 로 끊어서 확인
▶ 날짜를 문자열로
☞ 23/11/24 출력됨
▶ 시 분 초 : 오전(AM)/오후(PM)
▶ 오전 10:24:00
▶ 시 분 초 : 24시간 형식
▶ 11월 금, 2023
☞ MON은 몇'월' 형식, DY는 요일 알려주되 몇일인지는 알려주지 않음.
▶ 년도로써 쓸 수 있는 포맷
☞ YY와 RR의 차이점
- R : ROUND의 약자
- YY : 년도의 앞 두자리에 무조건 20이 붙음
- RR : 50년 기준으로 작으면 20, 크면 19 => 89년도면 1989
▶ 월로써 쓸 수 있는 포맷
▶ 일로써 쓸 수 있는 포맷
- D : 1주일 기준으로 일요일부터 오늘이 며칠째인지 알려주는 포맷
- DD : 1달 기준으로 1일부터 며칠째인지 알려주는 포맷
- DDD : 1년 기준으로 1월 1일부터 며칠째인지 알려주는 포맷
▶ 요일로써 쓸 수 있는 포맷
▶ 2023년 11월 24일 (금) 포맷으로 적용시키고 싶다
☞ "년"을 붙히려면 "년" 쌍따옴표로 추가해야한다.
▶ 사원명, 입사일(위의 포맷을 적용)
2010년 이후에 입사한 사원들만 구하기
☞ 여러가지 방법이 있지만 2가지 방법을 사용하였다. 방법②는 자동형 변환이 일어난다.
3. TO_DATE(NUMBER/CHARACTER, 포맷)
▶ NUMBER/CHARCATER => DATE
- TO_DATE(NUMBER/CHARACTER, 포맷) : 숫자 혹은 문자형 데이터를 날짜형으로 변환
(결과값은 DATE타입)
☞ 기본포맷 YY/MM/DD로 변환
☞ DATE 형으로 변환
▶ 20000101을 NUMBER값에서 DATE 자료형으로 변환하고 싶다
SELECT TO_DATE(000101)
FROM DUAL;
☞ 000101 => 101 : NUMBER 자료형에서 앞이 0으로 시작하면 전부 삭제된다
☞ 이경우, 0으로 시작하는 년도는 반드시 홀따옴표로 묶어서 문자열처럼 다뤄야함
☞ 이 문자열에 대한 정확한 포맷을 제시해줘야한다!
▶ 98/06/30 (1998년)
☞ 2098년도 이다!
☞ TO_DATE() 함수를 이용해서 DATE형식으로 변환시 두자리 년도에 대해 YY 포맷을 적용시켰을 경우 무조건 앞자리에 20년도가 추가된다.
☞ 1998년도
☞ 두자리 년도에 대해 RR포맷을 적용시켰을 경우 => 50 이상이면 이전(19), 50 미만이면 현재세기(20)를 추가
4. TO_NUMBER(CHARACTER, 포맷)
: 문자형 데이터를 숫자로 변환
CHARACTER => NUMBER
▶ 자동형변환 (문자열 → 숫자)
☞ 579 출력
☞ 자동형 변환 이후 산술연산 수행
☞ 문자열의 연결을 하려면 CONCAT함수를 사용하거나 || 연결함수를 써야함
☞ 문자(,)가 포함되어있기 때문에 자동형변환이 안됨
☞ 10555000 출력
☞ 문자열은 이러한 포맷을 가진 데이터라고 알려줘야한다!
'Database > Oracle' 카테고리의 다른 글
[Oracle] 2-6. DML(SELECT) - 함수_단일행 함수 ⑥ (선택 함수) (1) | 2023.11.24 |
---|---|
[Oracle] 2-5. DML(SELECT) - 함수_단일행 함수 ⑤ (NULL 처리 함수) (0) | 2023.11.24 |
[Oracle] 2-3. DML(SELECT) - 함수_단일행 함수 ③ (날짜 관련한 함수) (1) | 2023.11.24 |
[Oracle] 2-2. DML(SELECT) - 함수_단일행 함수 ② (숫자 관련한 함수) (0) | 2023.11.23 |
[Oracle] 2-1. DML(SELECT) - 함수_단일행 함수 ① (문자열 관련 함수) (0) | 2023.11.23 |