반응형

 

날짜 타입

 

SQL Developer에서 출력되는 날짜 타입의 형식을 변경할 수 있다.

기본 설정의 경우 RR/MM/DD의 형태로 되어 있다.

년도인 YYYY을 RR로 사용할 경우 50~90년은 1900년대로, 00~49년은 2000년대로 변환되어 출력된다.

 

설정 변경은 도구 > 환경설정 > 데이터베이스 > NLS 를 클릭하여 날짜 형식을 변경하면 된다.

 

도구 > 환경설정

 

데이터베이스 > NLS > 날짜 형식 변경

 

 

 

날짜 타입을 문자 타입으로 변환

 

-- to_char => 날짜 타입을 문자타입으로 변환
select to_char(날짜 타입, 문자타입) from 테이블;

 

select sysdate from dual;
select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') 날짜 from dual;
select to_char(sysdate, 'YYYYMMDD HH24:MI:SS') 날짜 from dual;

 

sysdate 출력

 

YYYY-MM-DD HH24:MI:SS 출력

 

YYYYMMDD HH24:MI:SS 출력

 

 

 

문자 타입을 날짜 타입으로 변환

 

-- to_date => 문자 타입을 날짜 타입으로 변환
select to_date(문자 타입, 날짜 타입) from dual;

 

select to_date('19880112', 'YYYYMMDD') from dual;

 

결과 화면2

 

 

 

날짜 계산 함수

 

1. 월 더하기 

add_months(date, integer) : date에  integer만큼의 월을 더한 날짜를 리턴

 

 

2. 현재 월의 마지막 일자

last_date(date) : 현재 월의 마지막 일자를 리턴

 

 

3. 다음주 특정 요일의 날짜

next_day(date, char) : date의 다음 주 char(요일)의 날짜를 리턴

 

 

4. 날짜 사이의 개월 수

months_between(date1, date2) : date1과 date2 사이의 개월 수를 리턴

 

 

  • 응용
-- add_months(date, integer) : date에  integer만큼의 월을 더한 날짜를 리턴
-- last_date(date) : 현재 월의 마지막 일자를 리턴
-- next_day(date, char) : date의 다음 주 char(요일)의 날짜를 리턴
-- months_between(date1, date2) : date1과 date2 사이의 개월 수를 리턴
select add_months(sysdate, 6) 육개월후,
    last_day(sysdate) 금월마지막일,
    next_day(sysdate, '일요일') 담주일요일,
    round(months_between(sysdate, sysdate-100)) 삼개월, -- 오늘 날짜 빼기 100일 => 삼개월 차이 남
    round(months_between(sysdate, '2023-10-25')) 이개월
from dual;
-- round : 반올림

 

결과 화면3

 

 

 

자르기

 

select trunc(sysdate, 자를 기준) from 테이블;

 

-- trunc : 소수점 자르기
select sysdate - to_date('19880112', 'YYYYMMDD') from dual;
select trunc(sysdate) - to_date('19880112', 'YYYYMMDD') from dual;

 

소수점 자르기 전

 

소수점 자른 후

 

 

  • 응용
-- 오늘날짜 20231221 기준 절삭시
select trunc(sysdate, 'Y') from dual;

 

년도 기준

 

 

-- 오늘날짜 20231221 기준 절삭시
select trunc(sysdate, 'MM') from dual;

 

달 기준

 

 

-- 오늘날짜 20231221 기준 절삭시
select trunc(sysdate, 'DD') from dual;

 

일 기준

 

 

 

시, 분, 초 계산하기

 

1. 시간 차이로 계산

select round((to_date('16:30', 'HH24:MI') - to_date('15:10', 'HH24:MI')) * 24, 1) 시간으로차이계산
    from dual;

 

시간 차이로 계산

 

 

2. 분 차이로 계산

select round((to_date('16:30', 'HH24:MI') - to_date('15:10', 'HH24:MI'))*24*60, 1) 분으로시간차이계산
    from dual;

 

분 차이로 계산

 

 

3. 초 차이로 계산

select round((to_date('16:30', 'HH24:MI') - to_date('15:10', 'HH24:MI'))*24*60*60,1) 초로시간차이계산
    from dual;

 

초 차이로 계산

 

 

 

응용

 

아래의 내용은 해당 날짜에 따라 값이 다르게 나온다.

 

  • 요일표시, 년월일 절삭하기

 

-- 결과 : 연도
select to_char(sysdate, 'year') from dual;

 

연도

 

 

-- 결과 : 목요일
select to_char(sysdate, 'day') from dual;

 

요일

 

 

-- 결과 : 목
select to_char(sysdate, 'dy') from dual;

 

요일 제외

 

 

-- 결과 : 3 (1:일, 2:월, 3:화, 4:수, 5:목, 6:금, 7:토)
select to_char(sysdate, 'd')from dual;

 

요일을 숫자로

 

 

 

AM, PM, 세기 표시

 

-- AM, PM, 세기 표시
-- nls_date_language = american : AM, PM
-- nls_date_language = korean : 오전, 오후
select to_char(날짜, 'AM', 'nls_date_language=나라') from dual;

 

-- AM, PM, 세기 표시
-- nls_date_language = american : AM, PM
-- nls_date_language = korean : 오전, 오후
select to_char(sysdate, 'AM', 'nls_date_language=american') as american,
    to_char(sysdate, 'AM', 'nls_date_language=korean') as korean from dual;

 

결과 화면

 

 

select to_char(to_date('20230322181011', 'YYYYMMDDHH24MISS'), 'YYMMDD HH:MM:SS AM') 오전오후
    from dual;

 

날짜 형식 변환

 

 

select to_char(sysdate, 'AD YYYY, CC"세기"')
    from dual;

 

서기

 

 

반응형

'데이터베이스' 카테고리의 다른 글

[Database] 13장 함수 모음2  (0) 2023.12.26
[Database] 12장 함수 모음1  (0) 2023.12.22
[Database] 10장 SQL 연습문제3  (0) 2023.12.19
[Database] 9장 SQL 연습문제2  (0) 2023.12.19
[Database] 8장 SQL 연습문제1  (0) 2023.12.18