KH/Oracle

# 7 오라클 날짜함수

오늘의 진 2022. 8. 24. 14:41

날짜 함수 

: 날짜형에 사용하는 함수이다.

결과 값은 날짜 또는 기간을 얻는다. 

기간은 주로 일단위로 계산(월 단위로 계산되는 경우도 있다.) 

날짜연산 
날짜 + 숫자 : 그 날짜로부터 그 기간만큼 지난 날짜를 계산 
날짜 - 숫자 : 그 날짜로 부터 그 기간만큼 이전 날짜를 계산 
날짜-날짜 : 두 날짜사이의 기간을 계산한다. 

 

SYSDATE 현재 날짜를 반환하는 함수 / 시스템에서 현재 날짜를 읽어와서 출력 
MONTHS_BETWEEN(day1,day2) day1과 day2 사이의 달수를 number타입으로 반환한다. 
TO_CHAR 숫자나 날짜를 문자형식으로 변환해준다. 
TO_DATE  : 숫자나 문자형식을 날짜형식으로 변환해준다. 
날짜를 넣어줄때는 TO_DATE형식으로 하고
그 날짜를 조회할떄는TO_CHAR형식으로 출력 
LAST_DATE( 달입력 ) 지정한 달의 마지막 날짜 가져오기 
ADD_MONTHS(a,b) a날짜에 b 날짜를 더한 값을 반환 
NEXT_DAY(날짜 , 요일) 해당 날짜부터 시작하여 명시된 요일을 만나면 해당되는 날짜를 반환

 

-- 1일 전
SELECT TO_CHAR(SYSDATE-1, 'RRRR-MM-DD HH24:MI:SS') AS "현재시간"  FROM DUAL; 
-- 1시간 전
SELECT TO_CHAR(SYSDATE-1/24, 'RRRR-MM-DD HH24:MI:SS') AS "현재시간"  FROM DUAL; 
-- 1분 전
SELECT TO_CHAR(SYSDATE-1/24/60, 'RRRR-MM-DD HH24:MI:SS') AS "현재시간"  FROM DUAL;
-- 1초 전
SELECT TO_CHAR(SYSDATE-1/24/60/60, 'RRRR-MM-DD HH24:MI:SS') AS "현재시간"  FROM DUAL;
-- 5시간 30분 10초 전
SELECT TO_CHAR(SYSDATE-(5/24+30/24/60+10/24/60/60), 'RRRR-MM-DD HH24:MI:SS') AS "현재시간"  FROM DUAL;

 

 

 

SYSDATE

현재 날짜를 반환하는 함수이다. 

시스템에서 현재 날짜를 읽어와서 출력 

 

예) emp 테이블 사원들의 현재 까지의 근무 일자를 구하시오. (소숫점 이하는 반올림 하시오)

   그리고 근무 년수도 소숫점이하 1자리까지 나오도록 구하시오.

>> select hiredate, round(sysdate-hiredate) "근무일자",round((sysdate-hiredate)/365,1) "년수" from emp;

 

(문제) 1996.01.01 일부터 현재까지 하루 세그릇을 먹는다고 했을 때 밥을 몇그릇 먹었을까 ?

 

select TO_NUMBER(SYSDATE - TO_DATE('1996/01/01' , 'YYYY-MM-DD'))*3 그릇 from dual;

MONTH_BETWEEN :  두 날짜사이의 개월수를 구하는 함수

 

예) 직원들이 근무한 개월수를 구하여라 

>> select ename, sysdate,hiredate,months_between(sysdate,hiredate) 근무개월수 from emp;

 

ADD_MONTHS(a,b)

Q ) 입사 날짜에서 4개월을 추가한 결과값을 나타내는 쿼리문 (4개월 전은 -4입력)

>> select ename, hiredate,add_months(hiredate,4) from emp;

 

 

 

 

 

 

 

 

Q) 오늘을 기준으로 가장 가까운 수요일은 언제인가 ? (각 언어타입에 맞게 날짜 입력해야한다.)

>> select sysdate,next_day(sysdate,'수요일') from dual;

>>select sysdate,next_day(sysdate,'wednes') from dual;

 

select sys_context('userenv' , 'language') "NLS SET" from dual ;    >> 설정된 언어 확인 방법

ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';  >> 설정된 언어 영어로 변환

 

Q) emp테이블에서 입사한 달의 마지막 날을 구하는 쿼리를 작성하시오 

>> select hiredate,last_day(hiredate) from emp; 

 

 

 

 

'KH > Oracle' 카테고리의 다른 글

# 9 NULL , 음수표시(PR),DECODE,CASE  (0) 2022.08.25
# 8 형 변환 함수  (0) 2022.08.25
# 6 오라클 숫자, 문자 함수  (0) 2022.08.24
# 5 DUAL 테이블  (0) 2022.08.24
# 4 데이터 타입 ,ORDER BY(정렬)  (0) 2022.08.23