날짜 함수
: 날짜형에 사용하는 함수이다.
결과 값은 날짜 또는 기간을 얻는다.
기간은 주로 일단위로 계산(월 단위로 계산되는 경우도 있다.)
날짜연산
날짜 + 숫자 : 그 날짜로부터 그 기간만큼 지난 날짜를 계산
날짜 - 숫자 : 그 날짜로 부터 그 기간만큼 이전 날짜를 계산
날짜-날짜 : 두 날짜사이의 기간을 계산한다.
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 |