
의사 테이블에서 근무 기간을 계산하여 일수와 년, 월, 일 형식으로 출력하는 SQL 쿼리를 작성해 보겠습니다. 🎯
SQL은 다양한 데이터베이스 관리 시스템(DBMS)에서 사용됩니다.
하지만 초보자에게 추천하는 SQL 버전은 MySQL입니다. 🐬
⚠️ DBMS별 날짜 계산 함수 차이:
CURDATE(), DATEDIFF() CURRENT_DATE, AGE() GETDATE(), DATEDIFF()📌 이 글에서는 MySQL 기준으로 설명합니다! 🐬
SELECT *,
DATEDIFF(CURDATE(), hire_date) AS 'hired_period_in_days'
FROM doctors;
| id | name | major | hire_date | hired_period_in_days |
|---|---|---|---|---|
| 1 | 르탄이 | 피부과 | 2018-05-10 | 2107 |
| 2 | 배캠이 | 성형외과 | 2019-06-15 | 1706 |
| 3 | 구구이 | 안과 | 2020-07-20 | 1311 |
CURDATE(): 현재 날짜를 반환합니다. (예: 2024-02-15)DATEDIFF(CURDATE(), hire_date): 현재 날짜와 고용일(hire_date) 간의 일 수를 계산합니다.AS 'hired_period_in_days': 결과 컬럼의 이름을 지정합니다. 🎯🚨 주의사항:
DATEDIFF()를 사용하면 일 수를 바로 계산할 수 있습니다. DATEDIFF(day, hire_date, GETDATE())를 사용합니다.SELECT name, hire_date,
FLOOR(DATEDIFF(CURDATE(), hire_date) / 365) AS years,
FLOOR((DATEDIFF(CURDATE(), hire_date) % 365) / 30) AS months,
(DATEDIFF(CURDATE(), hire_date) % 365) % 30 AS days
FROM doctors;
| name | hire_date | years | months | days |
|---|---|---|---|---|
| 르탄이 | 2018-05-10 | 5 | 9 | 5 |
| 배캠이 | 2019-06-15 | 4 | 8 | 0 |
| 구구이 | 2020-07-20 | 3 | 6 | 26 |
년, 월, 일 형식으로 출력합니다. FLOOR() 함수를 사용해 소수점을 버립니다. DATEDIFF(CURDATE(), hire_date) / 365: 근무 연수 (DATEDIFF(CURDATE(), hire_date) % 365) / 30: 근무 개월 수 (DATEDIFF(CURDATE(), hire_date) % 365) % 30: 근무 일 수🔍 TIP:
TIMESTAMPDIFF() 함수를 사용할 수도 있습니다. DATEDIFF()와 FLOOR()의 동작 원리를 이해하는 것이 더 중요합니다. 😊이번 글에서는 SQL에서 날짜를 다루는 방법을 다뤘습니다.
DATEDIFF() 함수를 통해 일 수 계산을 했고, CURDATE(), GETDATE(), CURRENT_DATE)가 다르다는 점도 살펴봤습니다.✅ 오늘 배운 핵심 포인트:
DATEDIFF(): 두 날짜 간의 일 수 계산 CURDATE(): 현재 날짜를 가져오는 함수(MySQL 기준) FLOOR(): 소수점을 버리는 함수