IT STUDY LOG
[Oracle] 단일 행 함수 - 변환 함수 본문
# 암시적 변환
||, LIKE 명령어, 문자 함수
SELECT '500', 300, '500' + 300
FROM dual;
SELECT *
FROM emp
WHERE deptno = '20'; -- 숫자 컬럼이나 암시적으로 변환
SELECT *
FROM emp
WHERE hiredate = '81/09/08'; -- 문자값을 날짜값으로 암시적으로 변환
# 명시적 변환
TO_CHAR
- 숫자나 날짜 데이터를 문자 데이터로 변환
SELECT SYSDATE, TO_CHAR(SYSDATE), 123450000, TO_CHAR(123450000)
FROM dual;
숫자 -> 문자 포맷팅
SELECT empno, sal * 100 * 12
, TO_CHAR(sal * 100 * 12, 'L999,999,999.9') "숫자 포맷 지정"
, TO_CHAR(sal * 100 * 12, '$099,999,999.99') "0포맷 지정" -- 0 포맷 지정
FROM emp;
SELECT TO_CHAR(-1234, '999,999mi') "음수1", TO_CHAR(-1234, '999,999pr') "음수2"-- 음수 포맷팅
, TO_CHAR(1234, '999,999mi') "양수1", TO_CHAR(1234, '999,999pr') "양수2"-- 양수 포맷팅
FROM dual;
날짜 -> 문자 포맷팅
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'yyyymmdd') "날짜 포맷1"
, TO_CHAR(SYSDATE, 'yyyy/mm/dd') "날짜 포맷2"
, TO_CHAR(SYSDATE, 'yyyy-mm-dd AM PM hh12:mi:ss') "날짜 포맷3" -- AM, PM 무관
, TO_CHAR(SYSDATE, 'yyyy.mm.dd hh24:mi:ss') "날짜 포맷4"
FROM dual;
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'MONTH Month month') "mon1"
, TO_CHAR(SYSDATE, 'MON Mon mon') "mon2"
FROM dual;
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'yyyy month dd')
FROM dual;
SELECT SYSDATE
, TO_CHAR(SYSDATE, 'DAY Day day')
, TO_CHAR(SYSDATE, 'DY Dy dy')
FROM dual;
SELECT SYSDATE, TO_CHAR(SYSDATE, 'Q WW W') -- 분기, 일년 중의 주, 한달 중의 주
FROM dual;
SELECT SYSDATE, TO_CHAR(SYSDATE, 'DDD DD D') -- 일년 중의 일, 한달 중의 일, 한주 중의 일(일요일 첫째날 기준)
FROM dual;
SELECT ename, hiredate
, TO_CHAR(hiredate, 'yyyy')||'년 '||TO_CHAR(hiredate, 'mm')||'월 '||TO_CHAR(hiredate, 'dd')||'일' "날짜 변환1"
, TO_CHAR(hiredate, 'yyyy"년" mm"월" dd"일"') "날짜 변환2"
FROM emp;
TO_DATE
- 숫자나 문자 데이터를 날짜 데이터로 변환, SELECT문의 WHERE절에 주로 사용
-- 연도 포맷팅시 yy보다 yyyy(세기 특정) 사용하기를 권장
SELECT ename, hiredate, TO_DATE('12월 17 1980', 'mm"월" dd yyyy')
FROM emp
-- WHERE hiredate = '80-12-17';
-- WHERE hiredate = TO_DATE('12월 17 1980', 'mm"월" dd yyyy');
WHERE hiredate = TO_DATE('19801217', 'yyyymmdd');
시분초를 포함한 날짜 비교 방법
① 범위 지정
SELECT ename, TO_CHAR(hiredate, 'yyyy-mm-dd hh24:mi:ss')
FROM emp
WHERE hiredate >= TO_DATE('1981/12/03')
AND hiredate < TO_DATE('1981/12/04');
② TRUNC 함수 활용
SELECT ename, TO_CHAR(hiredate, 'yyyy-mm-dd hh24:mi:ss')
FROM emp
WHERE TRUNC(hiredate, 'dd') = TO_DATE('1981/12/03');
③ TO_CHAR 활용
SELECT ename, TO_CHAR(hiredate, 'yyyy-mm-dd hh24:mi:ss "("day")"')
FROM emp
-- WHERE TO_CHAR(hiredate, 'dd') = '02';
-- WHERE TO_CHAR(hiredate, 'day') = '금요일';
-- WHERE TO_CHAR(hiredate, 'yyyymmdd') = '19811203';
WHERE TO_CHAR(hiredate, 'yyyy.mm.dd') = '1981.12.03';
TO_NUMBER
- 문자나 날짜 데이터를 숫자 데이터로 변환
'computer science > database' 카테고리의 다른 글
[Oracle] 그룹 함수 기본 (0) | 2023.08.30 |
---|---|
[Oracle] 단일 행 함수 - 일반 함수 (0) | 2023.08.30 |
[Oracle] 단일 행 함수 - 날짜 함수 (0) | 2023.08.30 |
[Oracle] 단일 행 함수 - 날짜 계산 결과 (0) | 2023.08.30 |
[Oracle] 단일 행 함수 - 숫자 함수 (0) | 2023.08.30 |
Comments