• 날짜함수, 변환함수
/* sysdate */
SELECT SYSDATE FROM dual;

/* months_between(date1, date2) */
SELECT FIRST_NAME, LAST_NAME, FLOOR(MONTHS_BETWEEN(SYSDATE, HIRE_DATE))
FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 50;

/* add_months() */
SELECT ADD_MONTHS(SYSDATE, 7) FROM dual;

/* next_day() 다음 날짜 찾기 */
SELECT NEXT_DAY(SYSDATE, '일요일') FROM dual;

/* last_day() 해당 달의 마지막 날짜찾기 */
SELECT LAST_DAY(SYSDATE) FROM dual;

/* TO_CHAR() 문자열 변환 */
SELECT TO_CHAR(SYSDATE, 'yymmdd') FROM dual;

/* TO_DATE() 날짜형 변환 */
SELECT TO_DATE('650801', 'rrmmdd') FROM dual;

 

  • nvl()
/* nvl() null값을 다른 데이터로 변경 */
SELECT FIRST_NAME, LAST_NAME, NVL(COMMISSION_PCT, 0) commision FROM EMPLOYEES e;

 

  • decode()
/* decode() switch문의 역할 */
SELECT DEPARTMENT_ID, DECODE(DEPARTMENT_ID, 20, '마케팅부', 60, '노비', '부서') 
FROM DEPARTMENTS d;

DEPARTMENT_ID가 20 => 마케팅부, 60 => 노비, 그 외는 부서로 표기

 

  • case()
/* case() else if문의 역할 */
SELECT FIRST_NAME, DEPARTMENT_ID,
	CASE WHEN DEPARTMENT_ID = 20 THEN '마케팅부'
		WHEN DEPARTMENT_ID = 60 THEN '전산실'
		ELSE ' '
		END 부서명
FROM EMPLOYEES e;

복사했습니다!