아래 이미지는 각 데이터형을 변환하는 함수를 나타낸다.

 

 

날짜 형식 시간 형식 숫자 형식
YYYY 년도 표현 (4자리) AM 또는 PM 오전(AM), 오후(PM) 을 표시 0 자릿수를 나타내며, 자릿수가 맞지 않을 경우 0으로 채움
YY 년도 표현 (2자리) A.M 또는 P.M 오전(A.M) 오후(P.M) 을 표시 9 자릿수를 나타내며, 자릿수가 맞지 않을 경우라도 채우지 않음
MM 월을 숫자로 표현 HH 또는 HH12 12시간을 기준으로 표시 (1시~12시) . 소수점을 표시
MON 월을 알파벳으로 표현 HH24 24시간을 기준으로 표시 (0시~23시) , 천 단위 자리를 구분
DAY 요일 표현 MI 분을 표시 L 각 지역별 통화 기호를 앞에 표시
DY 요일을 약어로 표현 SS 초를 표시

 

  • TO_CHAR
    • 날짜형 혹은 숫자형을 문자형으로 변환하는 함수이다.
    • 예) 현재 날짜를 문자형으로 변환하여 출력하는 쿼리문SQL> SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL; 
    • 예) 사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문SQL> SELECT HIREDATE, TO_CHAR(HIREDATE, 'YYYY/MM/DD DAY') FROM EMP; 
    • 예) 현재 날짜와 시간을 출력하는 쿼리문SQL> SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD, HH24:MI:SS') FROM DUAL; 
    • 각 지역별 통화 기호를 앞에 붙이고 천 단위마다 콤마를 붙여서 출력하는 쿼리문(예: ₩1,230,000)SQL> SELECT ENAME, SAL, TO_CHAR(SAL, 'L999,999') FROM EMP; 
    • 자릿수가 맞지 않을 경우 0은 0으로 채우고 9는 채우지 않는다.SQL> SELECT TO_CHAR(123456, '000000000'), TO_CHAR(123456, '999,999,999') FROM DUAL; 

  • TO_DATE
    • 문자형을 날짜형으로 변환하는 함수이다.
    • 날짜형은 세기, 연도, 월, 일, 시간, 분, 초와 같은 날짜와 시간에 대한 정보를 저장한다.
    • 기본 날짜 형식은 'YY/MM/DD' 형식으로 '년/월/일'을 나타낸다.
    • 1981년 2월 20일에 입사한 사원을 검색하는 쿼리문
    • [SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE=19810220;] 쿼리문을 실행하면 오류가 발생한다. 그 이유는 입사일 컬럼의 데이터 형은 DATE이므로 WHERE절에 숫자형으로 기술하면 데이터형이 일치하지 않기 때문에 요류가 발생한다. 오류가 발생하지 않게 하려면, 비교할 두 데이터의 자료 형태를 맞추어야 한다.SQL> SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE=TO_DATE(19810220, 'YYYYMMDD'); 
    • 올해 며칠이 지났는지 현재 날짜에서 2016/01/01을 뺀 결과를 출력하는 쿼리문SQL> SELECT TRUNC(SYSDATE-TO_DATE('2016/01/01', 'YYYY/MM/DD')) FROM DUAL; 

  • TO_NUMBER
    • 예) '20,000'과 '10,000'의 차이를 알아보기 위해서 빼기(-)연산을 구하는 쿼리문
    • [SELECT '20,000'-'10,000' FROM DUAL;]을 실행하면 오류가 발생한다. 그 이유는 '10,000'과'20,000'은 문자형이기 때문에 산술 연산을 수행하지 못하기 때문이다. 따라서 산술 연산을 하려면 문자형을 숫자형으로 변환한 다음에 연산을 실행해야 한다.SQL> SELECT TO_NUMBER('20,000', '99,999')-TO_NUMBER('10,000', '99,999') FROM DUAL; 

 

 

 

 

출처 : https://wikidocs.net - 예제로 배우는 Oracle 11g

+ Recent posts