SQL

SQL 5 [문자형으로 데이터 유형 변환 TO_CHAR / 날짜형으로 데이터 유형 변환 TO_DATE ]

아리빠 2023. 4. 27. 19:49

●문자형으로 데이터 유형 변환하기(TO-CHAR)

 

1.이름이 scott인 사원의 이름과 입사한 요일을 출력하고 scott의 월급에 천 단위를 구분 할 수 있는 콤마 붙여 출력하기

 

먼저 select -ename, hiredate을 요일로 변환 + 월급에 천단위 // from -emp  // where ename= 'scott'

요일을 변환 하려면?

월급에 천 단위를 입력하려면?

-> TO-CHAR

▶TO_CHAR

TO_CHAR은 숫자형 데이터 유형을 문자형으로 변환하거나 날짜형 데이터 유형을 문자형으로 변환 할 때 사용

ex) TO_CHAR(hiredate, 'RRRR') as 연도, TO_CHAR(hiredate, 'MM') as 달, TO_CHAR(hiredate, 'DD') as 일

 


2. 1981년도에 입사한 사원의 이름과 입사일 출력하기

WHERE hiredate = '1981' 이라 쓰게되면 형식이 맞지 않아 오류가 나오게 된다

▶EXTRACT

▶날짜 컬럼에서 연도/월/일/시간/분/초 를 추출하기 위해 EXTRACT 함수 사용 가능

ex) EXTRACT(year from hiredate) as 연도 ···

 


3. 이름과 월급을 출력하며 월급을 출력할 때 천 단위 표기

숫자 형식이 자릿수를 나타내기에, 9가 아닌 다른 숫자여도 가능 할까 해서 실행해본 쿼리 오류가 났다.

숫자는 자릿수를 나타내지만 9가 들어가야 한다. 

 L

알파벳 L을 사용하면 화폐 단위 ₩(원화)를 붙여 출력가능

ex) TO_CHAR( sal. 'L999,999')

 


●날짜형으로 데이터 유형 변환하기(TO_DATE)

 

4. 81년 1월 17일에 입사한 사원의 이름과 입사일 출력하기

-select 이름, 입사일

from emp

where TO_CHAR (hiredate, 'RRRR/MM/DD') = '1981/11/17' 

먼저 방금 배운 TO_CHAR을 사용해 쿼리 작성을 해봤고, 결과는 성공적으로 나왔다.

TO_CHAR 이 아닌 TO_DATE 를 사용한다면

날짜 데이터를 검색 할 때는 접속한 세션의 날자 형식을 확인해야 에러가 없다

날짜 형식 확인하는 쿼리는

SELECT *
FROM NLS_SESSION_PARAMTERS
WHERE parameter = 'NLS_DATE_FORMAT';

현재 접속한 세션의 날짜 포맷을 변경하는 명령어- 현재 접속한 세션에서만 유효하다

ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/RR';