ÎncepețiÎncepe gratuit

Aritmetică cu date și ani bisecți

Unii dintre voi poate aveți experiență cu R și este important de știut că aritmetica cu date în anii bisecți poate fi dificilă atunci când folosești pachetul lubridate. Acesta are două tipuri de funcții: duration și period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, ceea ce este incorect.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, ceea ce este corect.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, ceea ce este corect.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, un comportament neașteptat.

Podem folosi funcțiile DATEADD() și DATEDIFF() pentru a vedea cum gestionează SQL Server anii bisecți și dacă prezintă comportamente similare.

Acest exercițiu face parte din cursul

Analiza seriilor de timp în SQL Server

Vezi cursul

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
Editează și rulează codul