시작하기무료로 시작하기

날짜 계산과 윤년

여러분 중에는 R을 사용해 본 분도 계실 텐데, R과 lubridate 패키지에서는 윤년 날짜 계산이 까다로울 수 있다는 점을 짚고 넘어가겠습니다. lubridate에는 duration과 period 두 가지 유형의 함수가 있습니다.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01 (잘못된 결과)

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01 (올바른 결과)

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29 (올바른 결과)

lubridate::ymd(20120229) - lubridate::years(1) --> NA (예상치 못한 동작)

SQL Server에서 윤년을 어떻게 처리하는지 DATEADD()DATEDIFF() 함수를 사용해 살펴보면서 유사한 특이점이 있는지 확인해 보겠습니다.

이 연습은 강의의 일부입니다

SQL Server에서의 시계열 분석

강의 보기

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

DECLARE
	@LeapDay DATETIME2(7) = '2012-02-29 18:00:00';

-- Fill in the date parts and intervals as needed
SELECT
	DATEADD(___, ___, @LeapDay) AS PriorDay,
	DATEADD(___, ___, @LeapDay) AS NextDay,
    -- For leap years, we need to move 4 years, not just 1
	DATEADD(YEAR, ___, @LeapDay) AS PriorLeapYear,
	DATEADD(YEAR, ___, @LeapDay) AS NextLeapYear,
	DATEADD(___, -1, @LeapDay) AS PriorYear;
코드 편집 및 실행