Oracle DBA/SQL

20230623 (4) SQL 026 : 날짜 간 개월 수 출력하기

Nuez 2023. 6. 23. 11:16
반응형

함수의 종류 

1. 단일행 함수(single row function)

하나의 행 -> 함수 -> 하나의 값

- 문자

- 숫자 (ROUND, TRUNC, MOD)

- 날짜 (MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY)

- 변환

- 일반

2. 복수행 함수(multiple row function)

여러 개의 행 -> 함수 -> 하나의 값

- max

- min

- avg

- sum

- count

-기타 통계 관련


날짜 - 날짜 = 숫자

날짜 + 날짜 (X)

 

날짜 - 숫자 = 날짜

날짜 + 숫자 = 날짜 

 

* 오늘 날짜 보는 키워드 sysdate

SELECT sysdate
FROM dual;

SELECT sysdate-1
FROM dual;

SELECT sysdate +1
FROM dual;


오늘날짜 - 입사일을 출력하시오

SELECT sysdate - hiredate
FROM emp;

소수점은 시스템의 시간이 초단위까지 있기 때문. 계속 조회하면 그때마다 값이 변함. 

 


위의 결과를 다시 출력하되, 소수점 이하는 버리시오. 

SELECT TRUNC(sysdate - hiredate)
FROM emp;


이름과 입사한 날짜부터 오늘까지 총 몇 달을 근무했는지 출력하시오. 

SELECT ename, TRUNC(MONTHS_BETWEEN(sysdate, hiredate))
FROM emp;

구조 : MONTHS_BETWEEN(날짜1, 날짜2)

날짜2 ~ 날짜1 사이의 개월 수를 출력한다.

주의! 최신날짜를 앞에 써줘야 한다. 그렇지 않을 경우 값이 음수로 나옴. (OCP출제)


위의 SQL을 MySQL에서 구현하시오. 

SELECT ename, hiredate, TIMESTAMPDIFF(month, hiredate, sysdate())
FROM emp;