開始使用免費開始

日期運算與閏年

你們之中有些人可能用過 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,這是出乎意料的行為。

我們可以使用 DATEADD()DATEDIFF() 來看看 SQL Server 如何處理閏年,並檢查是否也有類似的特殊情況。

本練習屬於課程

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;
編輯並執行程式碼