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;