SQL - scott(개념 + 실습)7
숫자함수 : ROUND(), TRUNC(), CEIL(), FLOOR(), MOD()
날짜함수 : SYSDATE, CURRENT_DATE, CURRENT_TIMESTAMP
1) round() : 반올림
SELECT
round(1234.5678) AS round,
round(1234.5678, 0) AS round1,
round(1234.5678, 1) AS round2,
round(1234.5678, 2) AS round3,
round(1234.5678, - 1) AS round4,
round(1234.5678, - 2) AS round5
FROM
dual;
자리를 지정하지 않으면 기본 값으로 출력. 기본값은 0
2) trunc() : 버림
SELECT
trunc(1234.5678) AS trunc,
trunc(1234.5678, 0) AS trunc1,
trunc(1234.5678, 1) AS trunc2,
trunc(1234.5678, 2) AS trunc3,
trunc(1234.5678, - 1) AS trunc4,
trunc(1234.5678, - 2) AS trunc5
FROM
dual;
3) CEIL(), FLOOR()
- ceil() : 지정된 숫자보다 큰 정수중에서 가장 작은 정수
- floor() : 지정된 숫자보다 작은 정수 중에서 가장 큰 정수
SELECT
ceil(3.14),
floor(3.14),
ceil(- 3.14),
floor(- 3.14)
FROM
dual;
4) mod() : 나머지
SELECT
mod(15, 6),
mod(10, 2),
mod(11, 2)
FROM
dual;
자바에서 %와 같음
5) 날짜 함수 : 연산이 가능함.
- sysdate : 오늘 날짜. 오라클 서버가 돌아 가고 있는 시스템 시간을 가져옴.현재 시스템 시간.
- current_date : 현재 날짜.
- current_timestamp : 날짜 + 시, 분, 초 지역
SELECT
sysdate,
current_date,
current_timestamp
FROM
dual;
6) 오늘, 어제, 내일 날짜
SELECT
sysdate AS now,
sysdate - 1 AS yesterday,
sysdate + 1 AS tomorrow
FROM
dual;
7) add_months() : 몇 개월 이후 날짜 구하기
SELECT
sysdate,
add_months(sysdate, 3)
FROM
dual;
실습) 입사 20주년이 되는 사원들 조회
SELECT
empno,
ename,
hiredate,
add_months(hiredate, 240)
FROM
emp;
20주년 == 240 개월
실습) 현재 날짜를 기준으로 입사 45년 미만인 사원 조회
SELECT
*
FROM
emp
WHERE
add_months(hiredate, 540) > sysdate;
8) months_between(날짜1,날짜2) : 두 날짜 데이터 간의 날짜 차이를 개월 수로 출력
SELECT
empno,
ename,
hiredate,
sysdate,
months_between(hiredate, sysdate) AS months1,
months_between(sysdate, hiredate) AS months2,
trunc(months_between(sysdate, hiredate)) AS months3
FROM
emp;
9) 요일 알아보기
- next_day() : 특정 날짜를 기준으로 돌아오는 요일의 날짜 출력
- last_day() : 특정 날짜가 속한 달의 마지막 날짜 출력
SELECT
sysdate,
next_day(sysdate, '월요일'),
last_day(sysdate)
FROM
dual;