SQL - (날짜 데이터와 데이터 유형 변환하기)

Nobu90·2023년 8월 3일
1

SQL

목록 보기
5/8

오늘 날짜 출력하기

select sysdate
from dual

기간 계산하기 (달) - months_between(최근 날짜, 오래된 날짜)

예시) 입사한 날짜부터 오늘까지 총 몇 달 근무했는지 출력하기

select ename, months_between(sysdate, hiredate)
from emp

개월 수 더한 날짜 - add_months(기준 일자, 개월 수)

예시) select add_months('90/06/21', 400)
from dual

특정한 날짜 뒤에 돌아오는 요일 날짜 출력하기 - next_day(날짜, 요일)

예시) select next_day('2021/05/05','월요일')
from dual

특정 날짜가 있는 달의 마지막 날짜 출력하기 - last_day(특정 날짜)

예시) select last_day('2021/05/05')
from dual

명시적 형 변환

문자형으로 데이터 유형 변환하기 - to_char

날짜형 변환
to_char(날짜 컬럼명, '날짜 포맷')

날짜 포맷
년도 : RRRR, YYYY, RR, YY
달 : MON, MM
일 : DD
요일: DAY, DY

숫자형 변환
to_char(변환할 숫자, '999,999')
$ = 달러
L = 원화

태어난 일의 요일 구하기
to_date(날짜, '포맷')

예시) select to_char(to_date('90/06/21', 'YY/MM/DD'), 'DAY')
from dual

  • 현재 세션의 날짜 형식을 확인하는 방법
    select *
    from nls_session_parameters

  • 현재 세션의 날짜 형식을 DD/MM/RR로 변경합니다.

alter session set nls_date_format='RR/MM/DD'

추가 예시)
from emp
where hiredate = to_date('81/11/17', 'RR/MM/DD')

추가 예시)
81년도 입사한 직원 정보 구하기

select ename, hiredate
from emp
where hiredate >= to_date('81/01/01', 'rr/mm/dd') and hiredate <= to_date('81/12/31', 'rr/mm/dd') +1

암시적 형 변환

(암시적 형 변환시에는 속도가 느려기때문에 데이터 설계시부터 미리 타입을 정해야 함)

암시적으로 숫자가 우선이어서 오라클이 자동으로 형을 변환한다.

QUERY 실행 계획(explain plan for ~ from table(dmbs_xplan.display)

예시)
explain plan for
select ename, sal
from emp
where sal = '3000';

select * from table(dbms_xplan.display)

예시1)
select ename, sal
from emp
where sal(숫자) = '3000'(문자)
우측 문자를 숫자로 변환

예시2)
select ename, sal
from emp
where sal like '30%'
좌측 숫자를 우측 문자로 변환

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기