EmpezarEmpieza gratis

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

Ver curso

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;
Editar y ejecutar código