ComeçarComece de graça

Cálculos de data e anos bissextos

Alguns de vocês talvez tenham experiência com R, e vale lembrar que fazer contas com datas de anos bissextos pode ser complicado no R com o pacote lubridate. O lubridate tem dois tipos de funções: duration e period.

lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, o que está errado.

lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, o que está correto.

lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, o que está correto.

lubridate::ymd(20120229) - lubridate::years(1) --> NA, um comportamento inesperado.

Podemos usar as funções DATEADD() e DATEDIFF() para ver como o SQL Server lida com anos bissextos e se ele apresenta as mesmas excentricidades.

Este exercício faz parte do curso

Análise de Séries Temporais no SQL Server

Ver curso

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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;
Editar e executar o código