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
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;