테이블의 날짜형 칼럼에 값을 입력 시 DATE형으로 만들어 입력을 하거나 NLS_DATE_FORMAT에 맞는 문자열이라면 문자열로 입력이 가능하다. 가끔
날짜형에 문자를 넣을 때 FORMAT이 맞지 않아 애로사항이 있을 수 있으니 NLS_DATE_FORMAT 값을 알고 그 형식대로 문자열을 입력하면 된다.
실제 날짜 표기(TO_CHAR, TO_DATE 실행시) “월요일”, “MON” 으로 표시를 좌우하는 NLS_DATE_FORMAT 값은 NLS_LANGUAGE 을 따른다.
NLS_DATE_FORMAT은 현재 시스템의 기본 날짜 입출력 형태를 지정하는
파라미터 이며 TO_CHAR, TO_DATE 함수의 기본 DATE FORMAT이다.
2. NLS Parameters
NLS(National Language Support)는 언어 지원과 관련된 파라미터를 지칭
하며 SQL*PLUS등에서 확인 하려면 다음과 같이 조회한다.
SQL> show parameter nls
SQL기초강좌_NLS Parameters
3. SQL기초강좌_NLS Parameters
SQL> show parameter nls
NAME TYPE VALUE
----------------------- ------ --------
nls_calendar string //sysdate등에서 보이는 캘린더 데이터 포맷
nls_comp string BINARY //where절, PL/SQL안의 NLS데이터 비교 방법
nls_currency string
nls_date_format string
nls_date_language string
nls_dual_currency string
nls_iso_currency string
nls_language string AMERICAN
nls_length_semantics string BYTE
nls_nchar_conv_excp string FALSE
nls_numeric_characters string
nls_sort string
nls_territory string AMERICA
nls_time_format string
nls_time_tz_format string
nls_timestamp_format string
nls_timestamp_tz_format string
4. NLS Parameters
NLS_DATE_FORMAT이란?
테이블의 날짜형 칼럼에 값을 입력 시 DATE형으로 만들어 입력을 하거나
NLS_DATE_FORMAT에 맞는 문자열이라면 문자열로 입력이 가능하다. 가끔
날짜형에 문자를 넣을 때 FORMAT이 맞지 않아 애로사항이 있을 수 있으니
NLS_DATE_FORMAT 값을 알고 그 형식대로 문자열을 입력하면 된다.
실제 날짜 표기(TO_CHAR, TO_DATE 실행시) “월요일”, “MON” 으로 표시를
좌우하는 NLS_DATE_FORMAT 값은 NLS_LANGUAGE 을 따른다.
NLS_DATE_FORMAT은 현재 시스템의 기본 날짜 입출력 형태를 지정하는
파라미터 이며 TO_CHAR, TO_DATE 함수의 기본 DATE FORMAT이다.
SQL기초강좌_NLS Parameters
5. SQL> select * from nls_session_parameters
2 where parameter = 'NLS_DATE_FORMAT';
PARAMETER VALUE
------------------- -----------------------------------------
NLS_DATE_FORMAT RR/MM/DD
SQL> select sysdate from dual;
SYSDATE
--------
16/09/07
SQL> create table datetest (
2 mydate date
3 );
테이블이 생성되었습니다.
NLS Parameters
SQL기초강좌_NLS Parameters
6. SQL> insert into datetest values ('16/10/01');
1 개의 행이 만들어졌습니다.
SQL> insert into datetest values ('16-10-02');
1 개의 행이 만들어졌습니다.
SQL> insert into datetest values ('20161003');
1 개의 행이 만들어졌습니다.
SQL> insert into datetest values ('161004');
1 개의 행이 만들어졌습니다.
SQL> insert into datetest values ('10-06-2016');
insert into datetest values ('10-06-2016')
*
1행에 오류:
ORA-01830: 날짜 형식의 지정에 불필요한 데이터가 포함되어 있습니다
NLS Parameters
SQL기초강좌_NLS Parameters
7. SQL> select * from datetest;
MYDATE
--------
16/10/01
-- NLS_DATE_FORMAT에 맞지 않는 문자열이라면 DATE형으로 형변환해서 입력하면 된다.
SQL> insert into datetest values (to_date('10-06-2016','dd-mm-yyyy'));
1 개의 행이 만들어졌습니다.
SQL> select * from datetest;
MYDATE
--------
16/10/01
……
16/10/06
NLS Parameters
SQL기초강좌_NLS Parameters
8. -- NLS_DATE_FORMAT을 변경하여 현재 시스템의 날짜 입출력 포맷을 바꾸자.
SQL> alter session set nls_date_format='yyyy.mm.dd';
세션이 변경되었습니다.
SQL> select * from datetest;
MYDATE
----------
16.10.01
……
16.10.06
-- NLS_LANGUAGE값을 한국어로 바꾸자. NLS_DATE_FORMAT은 NLS_LANGUAGE값을 따른다.
SQL> alter session set nls_language='KOREAN';
세션이 변경되었습니다.
NLS Parameters
SQL기초강좌_NLS Parameters
9. -- 요일을 단축형과 전체표기 방식으로 표시
SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;
TO_CHAR(S TO_C
--------- ----
화요일 화
SQL> alter session set nls_language='AMERICAN';
Session altered.
SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;
TO_CHAR(SYSDA TO_CHA
------------- ------
TUESDAY TUE
NLS Parameters
SQL기초강좌_NLS Parameters
10. -- 월을 단축/축약형태로 표시(한글로 월표시는 단축형과 전체표기방식으로 표시하는 것이 같다.)
SQL> alter session set nls_date_format = 'YYYY-MON-DD';
세션이 변경되었습니다.
SQL> select hiredate from emp where rownum < 3;
HIREDATE
----------------
1980-12월-17
1981-2월 -20
NLS Parameters
SQL기초강좌_NLS Parameters
11. -- 월을 전체표기 방식으로 표시하자.
SQL> alter session set nls_date_format = 'YYYY-MONTH-DD';
세션이 변경되었습니다.
SQL> select hiredate from emp where rownum < 3;
HIREDATE
--------------
1980-12월-17
1981-2월 -20
SQL> alter session set nls_language='AMERICAN';
Session altered.
NLS Parameters
SQL기초강좌_NLS Parameters
12. -- 요일을 단축형과 전체표기 방식으로 표시
SQL> SELECT TO_CHAR(sysdate,'DAY'), TO_CHAR(sysdate,'DY') from DUAL;
TO_CHAR(SYSDA TO_CHA
------------- ------
SUNDAY SUN
-- 영문의 경우 단축형과 전체표기 방식이 다르다. 단축형은 3글자만 표시한다.
SQL> alter session set nls_date_format = 'YYYY-MON-DD';
Session altered.
NLS Parameters
SQL기초강좌_NLS Parameters
13. SQL> select hiredate from emp where rownum < 3;
HIREDATE
--------------
1980-DEC-17
1981-FEB-20
SQL> alter session set nls_date_format = 'YYYY-MONTH-DD';
Session altered.
SQL> select hiredate from emp where rownum < 3;
HIREDATE
---------------------
1980-DECEMBER -17
1981-FEBRUARY -20
NLS Parameters
SQL기초강좌_NLS Parameters