728x90
반응형
SMALL
■ 형변환 함수
- to_char : date(날짜형)을 char(문자형)으로 변환하는 함수
- to_char(날짜, '날짜모델요소')
SELECT * FROM nls_session_parameters;
SELECT
sysdate ,
to_char(sysdate, 'yyyymmdd'),
to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss.sssss') ,
to_char(sysdate + 100, 'yyyy-mm-dd hh24:mi:ss.sssss') ,
to_char(sysdate - 100, 'yyyy-mm-dd hh24:mi:ss.sssss')
FROM dual;
SELECT
sysdate ,
to_char(sysdate, 'yyyy yy rr rrrr year'),
to_char(sysdate, 'yyyy')||'년' ,
to_char(sysdate, 'yyyy"년"') -- 주의! 문자열과 함께 나열할 때에는 큰따옴표를 써야 한다.
FROM dual;
SELECT
to_char(add_months(sysdate,-1), 'month mon mm fmmm') "월" -- fm : 선행되는 제로를 제거하는 옵션
FROM dual;
-- 분석에서 자주 사용된다.
SELECT
to_char(sysdate, 'ddd dd d') "일" , -- ddd: 365일(기준), dd: 한달기준, d: 일요일기준 1 토요일 7
to_char(sysdate, 'day dy') "요일" ,
to_char(sysdate, 'ww w') "주" ,
to_char(sysdate, 'q"분기"') "분기별" ,
to_char(sysdate, 'dd ddth ddsp ddthsp') -- th:서수/ sp:스펠링
FROM dual;
SELECT
to_char(sysdate, 'hh am pm'),
to_char(sysdate, 'hh hh12 hh24 am pm')
FROM dual;
[문제1] 사원들의 emplyoee_id, hire_date, 입사요일을 출력해주세요. 단, 요일을 기준으로 오름차순 정렬해주세요.
SELECT employee_id, hire_date, to_char(hire_date, 'day') "입사요일"
FROM hr.employees
ORDER BY to_char(hire_date, 'd') asc; -- 요일 기준으로 정렬/ '일요일기준'
[문제 1-1] 월요일을 기준으로 오름차순 정렬해주세요.
SELECT employee_id, hire_date, to_char(hire_date, 'day') "입사요일"
FROM hr.employees
ORDER BY to_char(hire_date-1, 'd') asc;
[문제2] 사원들 중에 일요일에 입사한 사원들의 정보를 출력하세요.
SELECT *
FROM hr.employees
WHERE to_char(hire_date, 'day') = '일요일';
SELECT *
FROM hr.employees
WHERE to_char(hire_date, 'dy') = '일';
SELECT *
FROM hr.employees
WHERE to_char(hire_date, 'd') = '1';
[문제3] 오늘 날짜를 "2023년 10월 10일 화요일" 출력해주세요.
SELECT to_char(sysdate, 'yyyy"년" mm"월" dd"일" day') "오늘 날짜"
FROM dual;
- 객체지향 프로그램의 장점 중
- 오버로딩(overloading) : 함수이름만 같을 뿐 다른 함수
- to_char : number(숫자형)을 char(문자형)으로 변환하는 함수
to_char(숫자, '숫자모델형식') | to_char(날짜, '날짜모델형식') |
date(날짜형) → (반환) → char(문자형) | number(숫자형) → (반환) → char(문자형) |
SELECT
salary,
to_char(salary, '$999,999'),
to_char(salary, '$000,999.00') , -- '$000,999.00' : 0으로 표시하면 숫자가 없다면 0으로 출력
to_char(salary, 'l000,999.00') "지역통화부호" -- l(L의 소문자) 요소는 지역통화부호를 출력
FROM hr.employees;
ALTER SESSION SET NLS_LANGUAGE = american;
ALTER SESSION SET NLS_TERRITORY = america;
ALTER SESSION SET NLS_LANGUAGE = japanese;
ALTER SESSION SET NLS_TERRITORY = japan;
ALTER SESSION SET NLS_LANGUAGE = 'simplified chinese';
ALTER SESSION SET NLS_TERRITORY = china;
ALTER SESSION SET NLS_LANGUAGE = french;
ALTER SESSION SET NLS_TERRITORY = france;
ALTER SESSION SET NLS_LANGUAGE = korean;
ALTER SESSION SET NLS_TERRITORY = korea;
select * from nls_session_parameters;
SELECT
to_char(hire_date, 'month mon day dy') hiredate,
to_char(salary, 'l999g999d00') salary -- g:천단위/ d:소수점 → 나라마다 표기법이 다르기때문에
FROM hr.employees ;
SELECT
to_char(-1000, '999') , -- 자릿수가 잘못 표현했을 경우 '###'으로 나옴
to_char(-1000, '9999') ,
to_char(-1000, '9999pr') ,-- pr: 음수일 경우 <> 표현
to_char(-1000, '9999mi') ,-- mi: 음수 부호를 뒤에 표현
to_char(1000, 's9999') -- s: 부호 표현
FROM dual;
tip) to_char(금액 컬럼명, 'l999g999d00') : 나라별 표기법이 천 단위 표기법이 달라서 알고 가는 것이 좋다!
- to_number : 문자형(숫자문자일 경우)을 숫자형으로 변환하는 함수
- to_number(문자(숫자), '숫자모델요소(생략)')
SELECT 1+'2' --암시적으로 형변환이 된다.
FROM dual;
SELECT 1+to_number('2', '9') -- '9'는 보편적으로 생략한다.
FROM dual;
- to_date : 문자형(날짜)을 날짜형으로 변환하는 함수
- to_date(문자(날짜), '날짜모델요소')
SELECT *
FROM hr.employees
WHERE hire_date BETWEEN '06/01/01' AND '06/12/31' ;
ALTER SESSION SET NLS_LANGUAGE = american;
ALTER SESSION SET NLS_TERRITORY = america;
SELECT *
FROM hr.employees
WHERE hire_date BETWEEN '06/01/01' AND '06/12/31' ; -- 실행이 되지 않음. american 지역에서는 korea 날짜형식이 맞지 않기 때문이다.
SELECT * FROM nls_session_parameters;
SELECT *
FROM hr.employees
WHERE hire_date BETWEEN to_date('2006/01/01', 'yyyy/mm/dd') AND to_date('2006/12/31', 'yyyy/mm/dd');
★ 형변환 함수
to_char(날짜, '날짜모델형식') | date(날짜형)을 char(문자형)으로 변환하는 함수 |
to_chat(숫자, '숫자모델형식') | number(숫자형)을 char(문자형)으로 변환하는 함수 |
to_number(문자(숫자), '숫자모델요소(생략가능)') | 문자형(숫자문자일 경우)을 숫자형으로 변환하는 함수 |
to_date(문자(날짜), '날짜모델요소') | 문자형(날짜)을 날짜형으로 변환하는 함수 |
728x90
반응형
LIST
'Data Base > Oracle SQL' 카테고리의 다른 글
23.10.11. Oracle SQL 조건제어문 (0) | 2023.10.11 |
---|---|
23.10.11. Oracle SQL NULL, NVL, NVL2, COALESCE, NULLIF (1) | 2023.10.11 |
23.10.10. Oracle SQL 숫자 함수, 날짜 함수 (1) | 2023.10.10 |
23.10.06. Oracle SQL 정렬(SORT), 함수(function), 문자함수 (0) | 2023.10.06 |
23.10.06. Oracle SQL NULL / LIKE 연산 (1) | 2023.10.06 |