Kim VamPa

[Oracle DB] 오라클 세션 날짜/시간 형식 변환 본문

정보/IDE(설치,설정 등)

[Oracle DB] 오라클 세션 날짜/시간 형식 변환

Kim VamPa 2021. 2. 10. 05:18
728x90
반응형

Git 주소 : https://github.com/sjinjin7/Blog_Project

목표

 

기본값 SYSDATE 컬럼의 값 조회 시 '년/월/일/시간' 출력하기

 

 개인 프로젝트 진행 중 현재의 '년/월/일/시간'을 자동으로 등록되는 컬럼을 추가하였습니다.

 

1
2
3
4
5
6
7
8
9
 
    -- Oracle
    alter table vam_author add regDate date default sysdate;
    alter table vam_author add updateDate date default sysdate;
 
    -- MySQL
    alter table vam_author add regDate timestamp default now();
    alter table vam_author add updateDate timestamp default now();
 

 

 

 정상적으로 해당컬럼이 현재의 시간이 저장되었는지 확인하기 위해 SELECT문을 확인하였는데 '년/월/일/시간'을 출력하는 MySQL과 달리 Oracle은 '년/월/일'만 출력을 하였습니다.

 

그림 1 Oracle

 

그림 2 MySQL

 

 

 이러한 점에대해 궁금하여 왜 이런지에 대해 찾아보게 되었고 이유는 다음과 같습니다. Oracle DB에서  컬럼의 데이터 타입은 DATE이고 기본값으로 SYSDATE를 설정을 하면 년, 월, 일, 시간을 저장을 합니다. 하지만 Oracle에서 Date타입에 대해 일까지만 표시되도록 설정되어 있기 때문에 값을 호출하였을 때는 '년/월/일'만 출력됩니다. 따라서 설정을 변경해주면 '시간'까지 출력이 되는데, 그 방법을 알아보고자 합니다.

 

목차

1. 설정 변경 방법

2. 왜?

3. 현재 형식 확인하기 

 

1. 설정 변경 방법

 SYSDATE 오라클 시간함수는 시스템 세션(session) 상의 날짜와 시간을 가져오는데 세션(session)에서 DATE타입 데이터 형식(FORMAT) 설정 값(VALUE)이 '년/월/일'이기 때문에 SELECT문을 호출하였을 때 값이 '년/월/일'만 출력됩니다. 따라서 해당 데이터 형식(FORMAT)을 값(VALUE) 변경해주어야 합니다.

(SYSTIMESTAMP 오라클 시간 함수 또한 시스템 세션(session)에서 날짜, 시간 정보를 가져오기 때문에 해당 함수 리턴 값 형식 또한 session에서의 형식(FORMAT)의 값을 변경해주면 됩니다.)

 

 변경하기 앞서 현재의 설정이 어떻게 되었는지 확인합니다.

 

1
2
3
4
5
6
 
    SELECT * FROM nls_session_parameters WHERE parameter LIKE '%FORMAT%';
 
    -- or 
    show parameter nls_date_format;
 

 

그림 3

 

그림 4

 

 결과를 보면 "NLS_DATE_FORMAT"의 값(VALUE)이 'YYYY/MM/DD' 되어있습니다. 이 값을 변경해주면 됩니다. 저는 '년/월/일/ 시간'을 원하기 때문에 아래와 같이 명령어를 실행하였습니다.

 

1
2
3
 
  ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
 

 

해당 명령을 실행한 후 '년/월/일'만 출력되던 값이 다음과 같이 '년/월/일/시간'까지 출력하는 것을 확인할 수 있습니다. 

 

그림 5 Oracle

 

 

2. 출력 형식 양식

 DATE 타입의 형식을 어떠한 형식들로 변경할 수 있는지 직접 실습해보고 정리하고자 합니다. 변화된 형식을 확인하기 위해서 아래의 명령을 실행하였습니다.

 

1
2
3
 
    SELECT SYSDATE FROM DUAL;
 

 

 

2.1 'YYYY/MM/DD' 형식 VS 'YYYY-MM-DD'형식

 

'YYYY/MM/DD' 형식

 

1
2
3
 
    ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD';
 

 

그림 6

 

'YYYY-MM-DD' 형식

 

1
2
3
 
    ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD';
 

 

그림 7

 

2.2 날짜 형식

"년/월/일 시:분:초 12시간제 서기"

 

1
2
 
    ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH:MI:SS AM BC';

 

그림 8

 

"년/월/일 24시:분:초"

 

1
2
 
    ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';

 

그림 9

 

"년/월/일 요일 24시:분:초"

 

1
2
 
    ALTER SESSION SET NLS_DATE_FORMAT='YY/MM/DD DY HH24:MI:SS';

 

그림 10

 

"2 자리 년/월/일 24시:분:초"

 

1
2
 
    ALTER SESSION SET NLS_DATE_FORMAT='YY/MM/DD HH24:MI:SS';

 

그림 11

 

REFERENCE

 

DATE

  • 2020.02.10
728x90
반응형
Comments