MariaDB 날짜/시간 및 제어 흐름 함수
1. 날짜 및 시간 함수
현재 날짜/시간 조회
| 함수 | 설명 | 예시 | 결과 |
|---|
NOW() | 현재 날짜와 시간 | SELECT NOW(); | 2024-10-24 14:30:00 |
CURDATE() | 현재 날짜만 | SELECT CURDATE(); | 2024-10-24 |
CURTIME() | 현재 시간만 | SELECT CURTIME(); | 14:30:00 |
날짜/시간 추출
| 함수 | 설명 | 예시 | 결과 |
|---|
YEAR() | 연도 추출 | SELECT YEAR(NOW()); | 2024 |
MONTH() | 월 추출 | SELECT MONTH(NOW()); | 10 |
DAY() | 일 추출 | SELECT DAY(NOW()); | 24 |
TIME() | 시간 부분 추출 | SELECT TIME(NOW()); | 14:30:00 |
DAYNAME() | 요일 이름 | SELECT DAYNAME('2024-10-24'); | Thursday |
날짜 연산
| 함수 | 설명 | 예시 |
|---|
DATE_ADD() | 날짜 더하기 | SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); |
DATE_SUB() | 날짜 빼기 | SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); |
DATEDIFF() | 두 날짜의 차이(일) | SELECT DATEDIFF('2024-12-31', '2024-01-01'); |
날짜 형식 변환
| 함수 | 설명 | 예시 |
|---|
DATE_FORMAT() | 날짜 형식 지정 | SELECT DATE_FORMAT(NOW(), '%Y-%m-%d'); |
STR_TO_DATE() | 문자열을 날짜로 변환 | SELECT STR_TO_DATE('24-10-2024', '%d-%m-%Y'); |
한글 날짜 설정
SET lc_time_names = 'ko_KR';
SELECT DAYNAME('2024-10-25');
2. 제어 흐름 함수
IF 함수
IF(condition, true_value, false_value)
SELECT IF(SALARY > 3000, 'High', 'Low') FROM EMP;
IFNULL 함수
- 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다.
- 실무 활용: NULL 값을 다른 값으로 대체할 때 자주 사용됩니다.
IFNULL(expression, value_if_null)
SELECT sal, comm, sal*12 + IFNULL(comm, 0) FROM emp;
CASE 문
- 여러 조건을 평가하여 조건에 맞는 값을 반환합니다. IF-ELSE 구조와 유사하지만, 복잡한 논리 흐름을 처리할 때 유용합니다.
- 실무 활용: 여러 조건을 처리하여 그에 맞는 값을 반환할 때 사용됩니다.
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE resultN
END;
SELECT
EMPNO, ENAME, JOB, SAL AS 현재급여,
CASE
WHEN JOB = 'ANALYST' THEN SAL * 1.1
WHEN JOB = 'CLERK' THEN SAL * 1.5
WHEN JOB = 'MANAGER' THEN SAL * 1.2
WHEN JOB = 'SALESMAN' THEN SAL * 1.3
ELSE SAL
END AS 인상_급여
FROM EMP;
DECODE_ORACLE 함수
- Oracle의 DECODE() 함수와 유사하게 동작하는 함수로, 조건에 따라 특정 값을 반환하는 역할을 합니다. 이 함수는 특히 MariaDB에서 Oracle 호환성을 고려하여 사용할 수 있습니다
- expression: 비교할 값입니다.
- search: expression과 비교할 값입니다.
- result: search와 일치할 경우 반환할 값입니다.
- default: 모든 search 값과 일치하지 않을 때 반환할 기본값입니다.
DECODE_ORACLE(expression, search1, result1, [search2, result2, ...], default)
SELECT empno, ename,
DECODE_ORACLE(job,
'ANALYST', '분석가',
'CLERK', '서기',
'MANAGER', '매니저',
'SALESMAN', '영업사원',
'직책 미정') AS 직책명
FROM emp;
3. SQL 스크립트 실행
SOURCE 명령어 사용
SQL 스크립트는 데이터베이스에서 실행할 SQL 명령어들이 모여 있는 파일이나 코드 블록입니다. SQL 스크립트를 통해 여러 명령어를 순차적으로 실행하거나 반복적으로 사용해야 하는 작업을 자동화할 수 있습니다. 주로 .sql 확장자로 저장되며, 데이터베이스 구조 생성, 데이터 삽입, 변경, 삭제와 같은 작업을 포함할 수 있습니다.
SOURCE c:/MariaDB/script.sql
SOURCE /Users/username/MariaDB/script.sql
mysql -u [username] -p < script.sql
실무 활용 팁
- 날짜/시간 함수는 로그 기록, 데이터 추적에 필수
- 제어 흐름 함수는 복잡한 비즈니스 로직 구현에 활용
- CASE 문은 리포트 생성, 데이터 변환에 유용
- SQL 스크립트는 반복 작업 자동화에 효과적