본문 바로가기
DB/이론 및 개념

[DB] 13. 기본 SQL 8 - date 타입 (sysdate 키워드)

by 파프리카_ 2020. 9. 4.
728x90
반응형

DATE 타입

: 데이터베이스의 시간 (년, 월, 일, 시, 분, 초)을 관리하는 타입


[ 주요 키워드 ]

sysdate : 현재 시간을 표현하는 키워드

 

> dual 테이블을 이용해서 현재 시간을 조회

*dual 테이블 : oracle에서 제공하는 기본 테이블

SELECT sysdate
FROM   dual;

결과

 

[ 주요 함수 ]

1. TO_CHAR( [시간정보] , [format] ) : 원하는 시간 포맷을 설정해 문자열로 반환받는 함수

2. TO_DATE(  [시간정보] , [format] ) : 문자형 데이터를 DATE형으로 변환

* 웹 어플리케이션에서 시간 정보를 전달받아 DB에 저장하기 위해 주로 사용된다.

 

[ 시간 format 종류 ]

  • YYYY : 연도 (4글자 단위로 반환)
  • YY : 2글자 단위로 연도 반환
  • MM : 월
  • DD : 일
  • DAY : 요일
  • HH : 시간 (12시간 단위 반환)
  • HH24 : 시간 (24시간 단위 반환)
  • MI : 분
  • SS : 초

 

> 설정한 포맷으로 날짜 데이터 조회

 

1.  년 - 월 - 일

SELECT TO_CHAR(sysdate, 'YYYY-MM-DD')
FROM   dual;

 

2.  년 . 월 . 일

SELECT TO_CHAR(sysdate, 'YYYY.MM.DD')
FROM   dual;

 

3. 24시간 단위(HH24)로 시분초

SELECT TO_CHAR(sysdate, 'HH24:MI:SS')
FROM   dual;

 

4. 12시간 단위(HH)로 시분초

SELECT TO_CHAR(sysdate, 'HH:MI:SS')
FROM   dual;

 

5. 요일

SELECT TO_CHAR(sysdate, 'DAY')
FROM   dual;

 

6. 년/월/일 시:분:초

SELECT TO_CHAR(sysdate, 'YYYY/MM/DD HH24:MI:SS')
FROM   dual;


활용 예제 

실제 테이블을 생성해서 테스트해보자!

 

1. date_test TABLE CREATE 및 INSERT 

 * TO_DATE( [시간정보], [fomat] ) 함수를 이용

-- INSERT : id:java,  mydate:현재 시간 을 저장
INSERT INTO date_test(id, mydate) VALUES ('java', sysdate);
INSERT INTO date_test(id, mydate) VALUES ('jstl', TO_DATE('2020.9.1', 'YYYY.MM.DD'));
INSERT INTO date_test(id, mydate) VALUES ('ajax', TO_DATE('1989.1.7 5:20:33', 'YYYY.MM.DD HH24:MI:SS'));

 

-- date_test TABLE에서 년.월.일 만 조회

 


2. DATE 형 데이터 연산

 

1) 하루 전날 조회

SELECT id, mydate, mydate-1
FROM   date_test;

 

2) 현재 시간과 저장 시간의 날짜 차이를 확인 (소수점 이하 제외)
TRUNC () : 소수점 이하를 제외하는 sql 함수

SELECT id, mydate, TRUNC(sysdate-mydate)
FROM   date_test;

 

3) 현재 시간과 저장 시간의 개월 차이를 확인
MONTHS_BETWEEN 키워드 이용

SELECT id, mydate, TRUNC(MONTHS_BETWEEN(sysdate, mydate))
FROM   date_test;

 

4) 현재 시간과 저장 시간의 연도 차이를 확인
MONTHS_BETWEEN 키워드 활용 !

SELECT id, mydate, TRUNC(MONTHS_BETWEEN(sysdate, mydate) / 12)
FROM   date_test;

728x90
반응형