Aritmética de fechas y años bisiestos
Puede que algunos de vosotros tengáis experiencia con R, y aquí señalamos que la aritmética de fechas en años bisiestos puede ser complicada en R con el paquete lubridate. lubridate tiene dos tipos de funciones: duration y period.
lubridate::ymd(20120229) - lubridate::dyears(4) --> 2008-03-01, lo cual es incorrecto.
lubridate::ymd(20120229) - lubridate::dyears(1) --> 2011-03-01, que es correcto.
lubridate::ymd(20120229) - lubridate::years(4) --> 2008-02-29, que es correcto.
lubridate::ymd(20120229) - lubridate::years(1) --> NA, un comportamiento inesperado.
Podemos usar las funciones DATEADD() y DATEDIFF() para ver cómo SQL Server trata los años bisiestos y comprobar si presenta algunas de estas mismas particularidades.
Este ejercicio forma parte del curso
Análisis de series temporales en SQL Server
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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;