[Oracle] 오라클 #7, 숫자함수와 날짜함수(feat.dual 테이블)

숫자함수와 날짜함수



dual 테이블

- 상수값출력을 위한 임시테이블 , 레코드 1개를 출력하기위한 테이블

ex) 

>> select '상수' from dual; 

>> select 100 from dual;


숫자관련함수(수학함수)

1. round()

- 반올림

- number round(컬럼명)


>> select 3.14,round(3.14) from dual;

>> select 3.64,round(3.64) from dual;


문자열 데이터는 에러!!

>> select round('이름') from dual; --ORA-01722: invalid number


날짜 데이터는 정오를 기점으로 반올림

>> select round(to_date('2019-01-01 11:00:00')), round(to_date('2019-01-01 13:00:00')) from dual; 

-> 위의 쿼리를 실행시켜서 확인해보시기 바랍니다.



2. floor(), trunc()

- 무조건 내림

- 절삭 함수

- number floor(컬럼명)

- number trunc(컬럼명,소수이하자릿수)

>> select 123.654,round(123.654),floor(123.654),trunc(123.654,1) from dual;



3. ceil()

- 무조건 올림

- number ceil(컬럼명)

ex)

>> select 123.456, ceil(123.456) from dual;



4.mod()

- 나머지함수

- number mod(피제수,제수)

ex)

>> select mod(10,3) from dual;

ex) 100분은 몇시간 몇분인가??

>> select floor(100/60) as "시", mod(100,60) as "분" from dual;



날짜 시간 함수
1. sysdate
- 현재시각 반환
- date sysdate
특징 !!
- date + number(일) = date
- date - number(일) = date
- date - date = number(일)
ex) 현재시각 출력
>> select sysdate from dual;

- 날짜연산
-> date + 숫자(일) : 일단위 누적 연산

ex) 오늘과 내일과 어제 출력
>> select sysdate, sysdate +1 as 내일,sysdate -1 as 어제 from dual;

ex) 도서관(대여기간 14일) 관련 출력 쿼리
>> select 고객명,대여일,대여일+14 as 반납일 from 도서대출테이블;

ex) 시각 - 시각 = 시간
>> select to_date('2019-01-02') - to_date('2019-01-01') from dual; -- 1
>> select to_date('2019-01-02') - to_date('2019-01-01 12:00:00') from dual; -- 0.5


2. last_day
- 해당 시각이 포함된 달의 마지막 날짜
- date last_day(컬럼명)
ex)
>> select last_day(sysdate) from dual; -- 글작성 날짜 2월16일// 결과 : 19/02/28 즉, 2월의 마지막 날짜를 출력!!


3. months_between
- number months_between(date,date)
- 시간간격 계산(단위 : 월,년)
ex)
select
    name,
    입사일,
    ceil(sysdate - 입사일) as 근무일수,
    ceil((sysdate - 입사일)/365) as 근무년수, --사용X
    ceil(months_between(sysdate, 입사일))as 근무개월수,
    ceil(months_between(sysdate, 입사일))/12 as 근무개월수 --사용O
from 테이블;


4. add_months
- date add_months(date,number)
- 월단위 누적연산
ex)
>> select sysdate as"오늘",sysdate+1 as "내일(일)", add_months(sysdate,1) as "다음달(월)" from dual;


시각, 시간 연산 정리
1. date + 숫자(일),  date - 숫자(일)   => 시각
2. date - date = 시간차(일)
3. months_between(date,date) = 시간차(월)
4. add_months(date,숫자(월)) => 시각



댓글

Designed by JB FACTORY