감 잃지말고 개발하기

[Oracle] [기본] NLS_SESSION_PARAMETERS 본문

DB/Oracle

[Oracle] [기본] NLS_SESSION_PARAMETERS

persii 2023. 3. 13. 14:16

날짜 및 시간 형식 확인

 

출력결과


PARAMETER VALUE
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS . ,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NSL_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

여기서 NLS_DATE_FORMATNLS_TIMESTAMP_FORMAT은 각각 날짜와 시간의 형식을 나타내는 칼럼이다.

 

원하는 날짜 및 시간 형식으로 변경

ALTER SESSION SET 명령어현재 내가 접속한 세션의 파라미터를 변경하는 명령어이다.

 

여기서 세션(Session)이란 DB 유저로 로그인해서 로그아웃할 때까지의 한 단위를 말한다.

만약 내가 SCOTT 계정으로 접속했다면, SCOTT 계정으로 로그아웃 할 때까지의 단위가 하나의 세션이 된다.

때문에 내가 SCOTT 계정으로 변경한 세션의 파라미터들(NLS_DATE_FORMAT, NLS_TIME_FORMAT 등)은 현재 세션에서만 유효한 파라미터가 된다.

 

만약 내가 SCOTT 계정 접속을 로그아웃 한 후 다시 SCOTT 계정으로 재접속한다면 이전의 로그인 상태에서 변경한 NLS_SESSION_PARAMETERS의 파라미터 값들은 기본값으로 복귀되어 세팅된다. 


참고 

1. 날짜 형식에 대한 정의

형식 정의
YYYY 연도 4자리
YY 또는 RR 연도 2자리
MM 달의 2자리 값
MON 달의 영문 약어
DD 숫자 형식의 일
DAY 요일
DY 요일 약어
D 요일의 숫자
HH24 시간(0~24)
MI 분(0~59)
SS 초(0~59)
WW 연의 주
IW ISO 표준에 따른 년의 주
W 월의 주
YEAR 영어 철자로 표기된 년도
MONTH 영어 철자로 표기된 달

 

2. 연도 2자리 형식 YY vs RR

연도 2자리 형식인 RR와 YY는 서로 다르다.

예를 들어 현재 세션의 날짜 형식(NLS_DATE_FORMAT)이 'YY/MM/DD'이고 81년도 11월 17일에 입사한 사원을 조회하면 조회가 되지 않을 것이다.

 

선택된 레코드가 없다고 나오는 이유는 YY로 검색을 하게 되면 81년을 2081년으로 인식하고 검색하기 때문이다.

이에 반해 RR은 81년을 1981년도로 검색한다.

 

즉, YY는 입력 연도를 현재 날짜와 동시대로 계산하며, RR은 다음의 표에 따라 입력 연도를 계산한다.