SQL 함수 - 날짜 함수

이승범·2024년 9월 15일

select sysdate from dual;
-- 시스템 날짜(RR/MM/DD)
select sysdate-1 from dual;
-- 오늘 날짜에서 1일을 뺀 결과
select sysdate-1/24 from dual;
-- 오늘 날짜에서 1시간을 뺀 결과
select sysdate-1/24/60 from dual;
-- 오늘 날짜에서 1분을 뺀 결과
select to_char (sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
-- 날짜를 문자로 변환
select trunc (sysdate - to_date('2003-10-10', 'YYYY-MM-DD HH24:MI:SS')) from dual; -- 문자를 날짜로 변환

다양한 사용 예시들

select sysdate - to_date ('1998-07-11', 'YYYY-MM-DD HH24:MI:SS') from dual; -- 현재 날짜부터 내가 살아온 일수

select trunc (to_date('2024-12-25','YYYY-MM-DD HH24:MI:SS') - sysdate) from dual; -- 2024년 크리스마스까지 남은 날짜

--근무일수 구하기, hiredate는 입사일자
select sysdate - hiredate 근무일수
from 테이블명

--입사년도 출력
select hiredate,
extract(year from hiredate) 입사년도
from 테이블명;

--2010년 이후 입사자
select hiredate,
extract(year from hiredate) 입사년도
from 테이블명;
where extract(year from hiredate) >= 2010;

-- 1년 후 오늘
select sysdate + ( INTERVAL '1' Year) from dual;
            
-- 1년 전 오늘
select sysdate - ( INTERVAL '1' Year) from dual;
            
-- 1개월 더하기
select sysdate - ( INTERVAL '1' month) from dual;
            
-- 1일 더하기
select sysdate - ( INTERVAL '1' day) from dual;
            
-- 1시간 더하기
select to_char (sysdate + ( INTERVAL '1' hour), 'YYYY-MM-DD HH24:MI:SS') from dual;
            
-- 1분 더하기
select to_char (sysdate + ( INTERVAL '1' MINUTE), 'YYYY-MM-DD HH24:MI:SS') from dual;
           
-- 1초 더하기
select to_char (sysdate + ( INTERVAL '1' SECOND), 'YYYY-MM-DD HH24:MI:SS') from dual;
           
-- 2시간 20분 더 하기
select to_char (sysdate + ( INTERVAL '02:10' hour to minute), 'YYYY-MM-DD HH24:MI:SS') from dual;
            
-- 1분 30초 더하기
select to_char (sysdate + ( INTERVAL '01:30' minute to second), 'YYYY-MM-DD HH24:MI:SS') from dual;

-- rrn 컬럼이 주민번호 형식일때 구할수있는 다양한 데이터 예시
select rrn, to_date(substr(rrn, 1, 6), 'RRMMDD') birth from 테이블명; -- 생일 구하기
decode(mod(substr(rrn,8,1),2),0, '여자','남자') 성별
-- 성별 구하기
trunc(months_between(sysdate, to_date(substr(rrn, 1, 6), 'RRMMDD'))/12) 나이 -- 나이 구하기

-- 올해 1월 1일부터 오늘까지 몇일
select trunc(sysdate - trunc(sysdate, 'year')) from dual;
profile
creative

0개의 댓글