이번 포스팅에서는 SQL에서 날짜와 시간을 다룰 수 있는 함수들을 소개합니다. 데이터가 언제 발생했는지 추적하거나, 날짜 간의 차이를 계산하거나, 미래 일정을 예측하는 등 다양한 실무 상황에서 자주 쓰입니다.
다루는 함수 목록:
NOW()
CURDATE() / CURTIME()
DATE_ADD() / DATE_SUB()
💡 모든 예시는 지난 포스팅과 동일하게 company_db라는 예시 데이터베이스 안에 employees 및 projects 테이블을 기반으로 작성됩니다.
1. NOW() — 현재 날짜와 시간 반환
✔️ 사용 목적
- 시스템이 쿼리를 실행하는 현재 시각 (날짜 + 시간) 을 가져옵니다.
- 로그 기록, 트랜잭션 시간 추적 등에 자주 사용됩니다.
✔️ 예제
SELECT NOW() AS current_datetime;
예시 결과:
| current_datetime |
|---|
| 2025-05-30 14:32:15 |
2. CURDATE() / CURTIME() — 현재 날짜 또는 시간만 반환
✔️ 사용 목적
CURDATE(): 오늘 날짜만 필요할 때 (YYYY-MM-DD)
CURTIME(): 현재 시간만 필요할 때 (HH\:MM\:SS)
✔️ 예제
SELECT CURDATE() AS today,
CURTIME() AS current_time;
예시 결과:
| today | current_time |
|---|
| 2025-05-30 | 14:32:15 |
3. DATE_ADD(date, INTERVAL n unit) — 날짜 더하기
✔️ 사용 목적
- 기준 날짜에 일정 기간(일, 주, 월 등)을 더하여 마감일이나 예상 완료일 등을 계산할 수 있습니다.
✔️ 구문 설명
date: 기준이 되는 날짜 (DATE 타입)
n: 더하고자 하는 수치 (예: 5)
unit: 기간 단위 (DAY, MONTH, YEAR, HOUR, ...)
✔️ 예제
SELECT start_date,
DATE_ADD(start_date, INTERVAL 7 DAY) AS expected_due
FROM projects;
예시 결과:
| start_date | expected_due |
|---|
| 2023-01-01 | 2023-01-08 |
| 2023-03-15 | 2023-03-22 |
| 2024-01-01 | 2024-01-08 |
| 2022-06-01 | 2022-06-08 |
4. DATE_SUB(date, INTERVAL n unit) — 날짜 빼기
✔️ 사용 목적
- 특정 날짜에서 일정 기간을 뺀 이전 날짜를 구합니다.
- 유효기간 계산, 리마인더 설정 등에서 유용합니다.
✔️ 예제
SELECT hire_date,
DATE_SUB(hire_date, INTERVAL 14 DAY) AS onboarding_start
FROM employees;
예시 결과:
| hire_date | onboarding_start |
|---|
| 2020-05-20 | 2020-05-06 |
| 2021-03-15 | 2021-03-01 |
| 2019-11-05 | 2019-10-22 |
| 2022-01-10 | 2021-12-27 |
✅ 정리 요약: 날짜/시간 함수 비교
| 함수 | 기능 요약 | 활용 예시 |
|---|
NOW() | 현재 날짜 + 시간 반환 | 트랜잭션 기록, 로그 타임스탬프 |
CURDATE() | 현재 날짜만 반환 | 오늘 날짜 필터링, 보고서 날짜 |
CURTIME() | 현재 시간만 반환 | 시간대 기준 작업, 예약 비교 |
DATE_ADD() | 날짜에 기간 더하기 | 마감일 계산, 유예기간 설정 |
DATE_SUB() | 날짜에서 기간 빼기 | 유효기간 판단, 리마인더 생성 |
다음 파트에서는 숫자 함수를 정리해보겠습니다! 예산, 급여, 수량 등 수치형 데이터를 다룰 때 사용하는 함수들을 다뤄봅시다. 그럼 🙌