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;
'DB > 이론 및 개념' 카테고리의 다른 글
[DB] ERD / 다대다 관계 (many-to-many relation) - 교차 엔티티 Association Entity (0) | 2020.10.12 |
---|---|
[DB] DataBase Normalization 데이터베이스 정규화, 복합기본키 (2) | 2020.09.23 |
[day_07] DB / 12. 기본 SQL 7 - JOIN 조인 (inner join, outer join, cross join, self join) (2) | 2020.08.13 |
[day_06] DB / 11. ERD (Entity Relationship Diagram) - Foreign Key 외래키 (0) | 2020.08.13 |
[day_06] DB / 10. IN, NOT IN 연산자 (2) | 2020.08.13 |