Comece agoraComece grátis

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 exercicio faz parte do curso

Análise de Séries Temporais no SQL Server

Ver curso

exercicio interativo prático

Tente este exercicio 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 Código