Año bisiesto en SQL Server 2008 y Denali

Como podéis imaginar en este post vamos a ver algunas de las funciones relativas a fechas y de control de flujo básicas introducidas en Denali (SQL Server 2012) respecto a "cómo se hacían las cosas" en versiones anteriores de SQL Server:

Versión SQL Server 2008:

CREATE FUNCTION dbo.f_EsAñoBisiesto(@año VARCHAR(4)) RETURNS INT AS
BEGIN
DECLARE @resultado AS INT
IF DATEPART(dd,DATEADD(d,-1,(@año+'0301')))=29
   SET @resultado=1
ELSE
   SET @resultado=0
RETURN @resultado
END

Versión SQL Server 2012:

CREATE FUNCTION dbo.f_EsAñoBisiesto(@año INT) RETURNS INT AS
BEGIN
 RETURN(IIF(DATEPART(dd,(EOMONTH(CONCAT(@año,'0201')))) = 29, 1, 0))
END

Las diferencias son obvias en cuanto a reducción de código necesario, ya que se usan algunas funciones interesantes como CONCAT, para unir texto y números también, EOMONTH (devuelve el último día del mes de la fecha pasada como parámetro) y IIF (de idéntico funcionamiento a los lenguajes de programación tradicionales, donde el primer parámetro es la condición a evaluar, el segundo la acción a realizar o resultado a devolver si la condición evaluado es cierta, y el tercer parámetro la acción si la condición es falsa). Hasta la próxima.

No hay comentarios :

Publicar un comentario

Buscar en el Blog: