작성일 댓글 남기기

📅 SQL에서 날짜 계산과 윤년 판단 방법 및 주의할 점

✅ SQL에서 날짜 구하기
SQL의 날짜 함수는 사용하는 데이터베이스 시스템에 따라 다를 수 있습니다. 여기에서는 대표적으로 MySQLOracle, SQL Server 기준으로 소개합니다.

 

📌 현재 날짜 구하
DBMS
현재 날짜 함수
MySQL
CURRENT_DATE, CURDATE()
Oracle
SYSDATE
SQL Server
GETDATE()
— MySQL
SELECT CURDATE();
— Oracle
SELECT SYSDATE FROM DUAL;
— SQL Server
SELECT GETDATE();
📌 날짜 더하고 빼기
DBMS
사용법 예시
MySQL
DATE_ADD('2025-04-23', INTERVAL 7 DAY)
Oracle
SYSDATE + 7
SQL Server
DATEADD(DAY, 7, GETDATE())
🔄 윤년(leap year) 판단 방법
윤년은 **”4로 나누어 떨어지면서 100으로는 나누어떨어지지 않거나, 400으로 나누어떨어지는 해”**입니다.
📌 SQL로 윤년 구하기 (MySQL 예시)
SELECT
YEAR,
CASE
WHEN (YEAR % 4 = 0 AND YEAR % 100 != 0) OR (YEAR % 400 = 0)
THEN ‘윤년’
ELSE ‘평년’
END AS 윤년여부
FROM (
SELECT 2024 AS YEAR UNION ALL
SELECT 2025 UNION ALL
SELECT 1900 UNION ALL
SELECT 2000
) AS YEARS;
📌 Oracle 예시
SELECT year,
CASE
WHEN MOD(year, 4) = 0 AND MOD(year, 100) != 0 OR MOD(year, 400) = 0
THEN ‘윤년’
ELSE ‘평년’
END AS 윤년여부
FROM (SELECT 2024 AS year FROM dual
UNION ALL SELECT 2025 FROM dual
UNION ALL SELECT 1900 FROM dual
UNION ALL SELECT 2000 FROM dual);
⚠️ 주의할 점
  1. DBMS별 함수 차이
    날짜 계산 함수나 형식은 데이터베이스마다 다르므로, 사용 중인 시스템의 공식 문서를 참고해야 합니다.
  2. 윤년 판단은 직접 연산으로 구현해야 함
    대부분의 DB는 IS_LEAP_YEAR() 같은 내장 함수가 없기 때문에 수식을 직접 작성해야 합니다.
  3. 날짜 포맷 통일
    YYYY-MM-DD 또는 YYYY/MM/DD 등 날짜 형식이 일관되지 않으면 오류가 발생할 수 있으므로, 포맷을 항상 명시하거나 변환해 사용하는 것이 좋습니다.
  4. 타임존 고려
    특히 GETDATE(), SYSDATE 등은 서버의 시간대를 기준으로 하므로, 타임존이 중요한 시스템에서는 CURRENT_TIMESTAMP AT TIME ZONE 등을 활용해야 합니다.
🎯 결론
SQL에서 날짜 처리와 윤년 계산은 간단한 함수와 수식으로 구현할 수 있습니다. 하지만 DBMS별 문법 차이, 포맷 관리, 타임존 문제 등을 염두에 두고 사용하는 것이 중요합니다.