728x90
반응형
1. 형 변환 함수
날짜 출력 형식 | 숫자 출력 형식 | 숫자 출력 형식 | |||
종류 | 의미 | 종류 | 의미 | 구분 | 설명 |
YYYY | 년도 표현(4자리) | AM 또는 PM | 오전(AM), 오후(PM) 시각 표시 | 0 | 자릿수를 나타내며 자릿수가 맞지 않을 경우 0으로 채움 |
YY | 년도 표현(2자리) | HH 또는 HH12 | 시간(1~12) | 9 | 자릿수를 나타내며 자릿수가 맞지 않아도 채우지 않음 |
MM | 월을 숫자로 표현 | HH24 | 24시간으로 표현(0~24) | L | 각 지역별 통화 기호를 앞에 표시 |
MON | 월을 알파벳으로 표현 | MI | 분 표현 | . | 소수점 |
DAY | 요일 표현 | SS | 초 표현 | , | 천 단위 자리 구분 |
DY | 요일을 약어로 표현 |
# TO_CHAR
날짜형 혹은 숫자형을 문자형(VARCHAR2)으로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD'), // 현재 날짜를 기본 형식과 다른 형태로 출력
TO_CHAR(SYSDATE, 'YYYY/MM/DD DAY'), // 현재 날짜를 출력하되 요일까지 함께 출력
TO_CHAR(SYSDATE, 'YYYY/MM/DD, AM HH:MI:SS'), // 현재 날짜와 시간 출력
TO_CHAR(1234000, 'L999,999,999'), // 통화 기호를 붙여 출력
TO_CHAR(123456, '0000000000'), // 빈 여백을 0으로 채움
TO_CHAR(123456, '999,999,999') // 천 단위 자리 구분
FROM DUAL;
# TO_DATE
문자형을 날짜형으로 변환
SELECT hiredate=TO_DATE(20170101, 'YYYYMMDD'), // 2017년 1월 1일에 입사한 사원 검색
TRUNC(SYSDATE-TO_DATE('2017/01/01', 'YYYY/MM/DD')) // 현재 날짜에서 2017년 1월 1일을 뺀 결과 출력(며칠이 지났는지 출력)
FROM DUAL;
# TO_NUMBER
문자형을 숫자형으로 변환
SELECT TO_NUMBER('20,000', '99,999')
- TO_NUMBER('10,000', '99,999') // 수치 형태의 문자 값의 차
FROM DUAL;
2. 날짜 함수
구분 | 설명 |
SYSDATE | 시스템에 저장된 현재 날짜 반환 |
MONTHS_BETWEEN | 두 날짜 사이가 몇 개월인지 반환 |
ADD_MONTHS | 특정 날짜에 개월 수 더함 |
NEXT_DAY | 특정 날짜에서 최초로 도래하는 인자로 받은 요일의 날짜 반환 |
LAST_DAY | 해당 달의 마지막 날짜 반환 |
ROUND | 인자로 받은 날짜를 특정 기준으로 반올림 |
TRUNC | 인자로 받은 날짜를 특정 기준으로 버림 |
# SYSDATE 함수
SELECT to_char(SYSDATE-1, 'YYYY/MM/DD'), // 어제
to_char(SYSDATE, 'YYYY/MM/DD'), // 오늘
to_char(SYSDATE+1, 'YYYY/MM/DD') // 내일
FROM DUAL;
# ROUND 함수
ROUND(date, format)
포맷 모델 | 단위 |
CC, SCC | 4자리 연도의 끝 두 글자를 기준으로 반올림 |
SYYY, YYYY, YEAR, SYEAR, YYY, YY, Y | 년(7월 1일부터 반올림) |
DDD, D, J | 일을 기준으로 반올림 |
HH, HH12, HH24 | 시를 기준으로 반올림 |
Q | 한 분기의 두 번째 달의 16일을 기준으로 반올림 |
MONTH, MON, MM, RM | 월(16일을 기준으로 반올림) |
DAY, DY, D | 한 주가 시작되는 날짜를 기준으로 반올림 |
MI | 분을 기준으로 반올림 |
# TRUNC 함수
TRUNC(date, format)
SELECT to_char(TRUNC(hiredate, 'MONTH'), 'YYYY/MM/DD') // 특정 날짜(DATE)를 달(MONTH)을 기준으로 버리기
FROM emp;
# MONTHS_BETWEEN 함수
MONTHS_BETWEEN(date1, date2)
SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, hiredate)) // 근무달수(두 날짜 사이의 간격을 구함)
FROM emp;
# ADD_MONTHS 함수
ADD_MONTHS(date, number)
SELECT to_char(ADD_MONTHS(hiredate, 6), 'YYYY/MM/DD') // 입사 6개월 후
FROM emp;
# NEXT_DAY 함수
NEXT_DAY(date, 요일)
SELECT to_char(NEXT_DAY(hiredate), 'YYYY/MM/DD') // 마지막 날짜
FROM emp;
728x90
반응형
'Database > Oracle' 카테고리의 다른 글
Oracle。시퀀스(Sequence) (0) | 2017.06.17 |
---|---|
Oracle。NVL, DECODE, CASE 함수 (0) | 2017.06.09 |
Oracle。DUAL 테이블과 오라클 주요 함수 1 (0) | 2017.06.05 |
Oracle。ORDER BY 절과 집합 연산자 (0) | 2017.06.03 |
Oracle。WHERE 절과 연산자 (0) | 2017.06.02 |