1. DATE
sysdate 은 DATE 형입니다.
create table test_date as
select
sysdate as today
from dual;
test_date 의 레이아웃을 보면 today 칼럼이 DATE 형임을 확인할 수 있습니다.
2. TIMESTAMP
TIMESTAMP 는 DATE 형의 확장형입니다.
TIME ZONE 옵션에 따라 표현 방식이 미세하게 다른 몇 가지가 있습니다.
아래 스크립트를 통해 확인해볼 수 있습니다.
CREATE TABLE temp_time_table
(COL1 TIMESTAMP,
COL2 TIMESTAMP WITH TIME ZONE,
COL3 TIMESTAMP WITH LOCAL TIME ZONE);
INSERT INTO temp_time_table
VALUES(SYSDATE, SYSDATE, SYSDATE);
SELECT * FROM temp_time_table ;
drop table temp_time_table;
3. INTERVAL DAY(9) TO SECOND(6)
일,시,분,초를 사용하여 두 날짜 사이의 기간을 저장하기 위한 데이터형입니다.
CREATE TABLE temp_time_table
(start_time TIMESTAMP,
end_time TIMESTAMP);
-- 555초 소요된 케이스 등록
INSERT INTO temp_time_table
VALUES(SYSDATE-555/24/60/60, SYSDATE);
CREATE TABLE temp_time_interval as
SELECT
start_time
,end_time
,end_time - start_time as interval_time
FROM temp_time_table ;
select * from temp_time_interval;
레이아웃에서 interval_time 의 칼럼형을 확인할 수 있습니다.
4. INTERVAL 칼럼에서 시분초만 확인하기
INTERVAL DAY(9) TO SECOND(6) 칼럼의 데이터에서 시분초만 00:00:00 패턴으로 뽑으려면 어떻게 할까요?
다른 여러가지 방법들이 있겠지만 substr 으로는 다음과 같이 할 수 있습니다.
초 이하 부분이 반올림이 아닌 절사 되는 개념이라 아주 미세하게 오차가 있다고 볼 수 있습니다.
select
substr(interval_time,12,8) as gap -- 00:00:05 패턴만 뽑아내기
,a.* from temp_time_interval a
5. 임시 테이블 drop 하고 정리할게요
drop table temp_time_interval;
reference
https://docs.oracle.com/database/121/SQLRF/sql_elements001.htm#SQLRF0021
https://www.oracletutorial.com/oracle-basics/oracle-interval/
'SQL' 카테고리의 다른 글
Oracle 공부 경험담 (0) | 2023.02.01 |
---|---|
key value 파싱 방법 (0) | 2022.10.07 |
20년 간 몰랐던 LTRIM RTRIM 사용법 (0) | 2022.08.30 |
[TIP] 테이블 레이아웃 조회 (0) | 2022.08.23 |
부서별 평균 월급보다 높은 월급의 사원 목록 구하기 (0) | 2022.07.19 |