Programming

🚀 MSSQL에서 날짜 연산 쉽게 하기! (`DATEADD`, `DATEDIFF`, `GETDATE` 활용)

quantoasis 2025. 3. 19. 14:51
반응형

MSSQL에서 날짜 데이터를 다룰 때 연산이 필요한 경우가 많습니다.
예를 들어, "30일 후 날짜 구하기", "두 날짜 간 차이 계산" 같은 연산이 필요할 때가 있죠.
이번 포스팅에서는 DATEADD, DATEDIFF, GETDATE 함수를 활용하여 날짜 연산을 쉽게 하는 방법을 정리해보겠습니다! ✅


🎯 1. 현재 날짜 가져오기 (GETDATE())

GETDATE()는 현재 날짜와 시간을 반환하는 함수입니다.

SELECT GETDATE() AS CurrentDateTime;

출력 예시
📅 2025-03-19 14:35:20.123

만약 날짜만 필요하다면?

SELECT CAST(GETDATE() AS DATE) AS CurrentDate;

📅 2025-03-19


🎯 2. 특정 날짜에서 일, 월, 년 더하기 (DATEADD)

DATEADD 함수는 특정 날짜에 일(day), 월(month), 연(year) 등을 더하거나 뺄 때 사용합니다.

SELECT DATEADD(DAY, 10, GETDATE()) AS Add10Days;
SELECT DATEADD(MONTH, -2, GETDATE()) AS Subtract2Months;
SELECT DATEADD(YEAR, 5, '2025-01-01') AS Add5Years;

출력 예시

  • 10일 후: 2025-03-29
  • 2개월 전: 2025-01-19
  • 5년 후: 2030-01-01

📌 DATEADD(단위, 추가할 값, 기준 날짜) 형식으로 사용합니다.
| 단위 | 설명 |
| --- | --- |
| YEAR | 년 (Y, YY, YYYY 가능) |
| MONTH | 월 (M, MM 가능) |
| DAY | 일 (D, DD 가능) |
| HOUR | 시간 |
| MINUTE | 분 |
| SECOND | 초 |


🎯 3. 두 날짜 간 차이 계산 (DATEDIFF)

두 날짜 간의 차이를 계산할 때는 DATEDIFF를 사용합니다.

SELECT DATEDIFF(DAY, '2025-01-01', GETDATE()) AS DaysDiff;
SELECT DATEDIFF(MONTH, '2024-01-01', '2025-03-01') AS MonthsDiff;
SELECT DATEDIFF(YEAR, '2000-01-01', '2025-01-01') AS YearsDiff;

출력 예시

  • 2025-01-01부터 오늘까지의 일 수 차이: 77
  • 2024-01-01부터 2025-03-01까지의 개월 수 차이: 14
  • 2000-01-01부터 2025-01-01까지의 연도 차이: 25

📌 DATEDIFF(단위, 시작 날짜, 종료 날짜) 형식으로 사용합니다.
| 단위 | 설명 |
| --- | --- |
| YEAR | 연도 차이 |
| MONTH | 개월 차이 |
| DAY | 일 수 차이 |
| HOUR | 시간 차이 |
| MINUTE | 분 차이 |
| SECOND | 초 차이 |


🎯 4. 특정 날짜의 시작과 끝 구하기

1️⃣ 해당 월의 첫 날 구하기

SELECT DATEADD(DAY, 1-DAY(GETDATE()), GETDATE()) AS FirstDayOfMonth;

📅 예시: 2025-03-01

2️⃣ 해당 월의 마지막 날 구하기

SELECT EOMONTH(GETDATE()) AS LastDayOfMonth;

📅 예시: 2025-03-31

3️⃣ 해당 연도의 첫 날 & 마지막 날 구하기

-- 첫 날
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS FirstDayOfYear;

-- 마지막 날
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS LastDayOfYear;

📅 예시:

  • 첫 날: 2025-01-01
  • 마지막 날: 2025-12-31

🎯 5. 실전 예제

1️⃣ 최근 7일간 데이터 조회

SELECT * FROM Orders
WHERE OrderDate >= DATEADD(DAY, -7, GETDATE());

2️⃣ 이번 달의 주문 내역 조회

SELECT * FROM Orders
WHERE OrderDate >= DATEADD(DAY, 1-DAY(GETDATE()), GETDATE()) 
AND OrderDate <= EOMONTH(GETDATE());

3️⃣ 올해 등록된 회원 수 구하기

SELECT COUNT(*) AS UserCount
FROM Users
WHERE JoinDate >= DATEFROMPARTS(YEAR(GETDATE()), 1, 1);

🎯 마무리

MSSQL에서 날짜 연산을 쉽게 하려면 3가지 함수를 기억하세요!
GETDATE() → 현재 날짜 가져오기
DATEADD() → 날짜 더하거나 빼기
DATEDIFF() → 두 날짜 간 차이 구하기

이제 날짜 연산이 필요한 SQL을 더 쉽게 작성할 수 있을 거예요! 🚀

추가 질문이 있다면 댓글로 남겨주세요! 😊


📌 태그
#MSSQL #SQL #DATEADD #DATEDIFF #GETDATE #데이터분석 #쿼리 #날짜연산

반응형