저번부터 궁금했던 것이, 오라클의 DATE형 변수에는 도대체 무슨 함수로 값을 입력해야 하나? 라는 의문이 있었는데,
만약 오라클 자체의 시간으로 입력할려면, SYSDATE 함수를 쓰고, 오라클 DBMS 에 접속한 현지시간을 쓸려면, CURRENT_DATE 를 쓰면 된다. 한번 해보자.
INSERT into member(ID,NAME,regdate) values('LG CNS', '최동훈', sysdate);
이 쿼리를 쓰니 된다. !! 그 전에는 무슨 함수를 써야 DATE타입에 값을 넣을수 있는지 몰랐는데, 이제서야 알게됬다.
들어갔다. !!
그런데 난 분명 sysdate 는 년/월/일 뿐만 아니라 시 분 초 까지 다 입력되는것으로 알고 있는데 이런 형식으로 REGDATE 필드(칼럼)값을 보이게 할려면 어떻게 해야 할까? 바로 포맷을 조정하면 된다.
잘못 이해했다. 다시 설명한다. 일단 SQL에서 날짜함수는 크게 두 가지 기준에 따른 부분으로 나뉜다.
첫번째는 "시간" 의 기준이 되는 장소이다.
바로 "오라클 서버 위치 기준(현재시간)" / "사용자 세션별 지정한 시간 기준" 이다. 이 두게는 각 각 sys 와 current 로 나뉜다.
두번째는 "나타내는 시간의 범위" 이다.
시/분/초 까지의 단위와, 밀리세컨드 까지의 단위 를 나타낸다. 각각 순서대로 date 와 timestamp로 나뉜다.
예를 들자면, sysdate는 "오라클 서버가 위치한 곳 기준 시/분/초 까지 나타내고, systimestamp는 "오라클 서버가 위치한 곳 기준 밀리세컨드 단위까지 나타내는 것이다.
select sysdate,systimestamp from dual;
이 쿼리를 실행해보면 date 와 timestamp의 차이를 알 수 있다.
다시 본론으로 돌아가서 그럼 이쁘게 sysdate만 써서 시/분/초 까지 나타내는 포맷을 지정할려면 어떻게 해야 할까?
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
이렇게 NLS(national language support) 라는 오라클에서 각 지역별로 날짜 표기법이 다르니 설정을 통해 바꿀수 있는 기능을 제공한다.
이렇게 바뀌었다.
그럼, 우리가 입력한 DATE타입에서 문자열이 아니니 월/일 등을 뽑아내려면 어떻게 해야할까? 문자열이 아니니 SUBSTR 함수를 쓰지 못할 것이다. 바로 EXTRACT 라는 DATE 타입에서 월/일 만 뽑아낼수 있는 함수를 쓰면 된다.
select EXTRACT(MONTH FROM MEMBER) FROM MEMBER;
이렇게 한다면 원하는 월 만 추출 가능 하다.
공부시간 2시간.
순공시간 1시간.
오늘은 오후에 병원 다녀오느라 공부를 많이 못한거 같다.. 내일 조금더 분발해야 겠다.
'기록 > SQL' 카테고리의 다른 글
SELECT (1) : 구절 순서와 ORDER BY 함수. 2021-08-05 (0) | 2021.08.05 |
---|---|
형변환 함수 + NULL 처리 함수. 2021-08-03 (1) | 2021.08.03 |
문자열 함수 LOWER,UPPER, PAD, INSTR. 2021-07-30 (0) | 2021.07.30 |
ROWNUM을 이용한 페이징 출력, 중복제거 distinct 키워드, 문자열 자르기 SUBSTR 함수. 2021-07-29 (0) | 2021.07.29 |
정규식 패턴 + 특수문자가 포함된 칼럼 검색 2021-07-28 (1) | 2021.07.28 |