jueves, 4 de julio de 2013

Armar fecha con año, mes y día en Transact-SQL

Para generar una fecha en base a tener el año, mes y día en variables numéricas pero en Transact-SQL les propongo crear esta función que de ser una fecha válida nos la retornará con los parámetros enviados y de no ser así regresará NULL:

CREATE FUNCTION dbo.CrearFecha
(@annio SMALLINT, @mes TINYINT, @dia TINYINT)
RETURNS DATETIME AS
BEGIN

DECLARE @tmp CHAR(8), @r DATETIME
SET @tmp = CAST(@annio AS CHAR(4)) + CAST(@mes AS CHAR(2)) + CAST(@dia AS
CHAR(2))
IF ISDATE(@tmp) = 0
SET @r = NULL
ELSE
SET @r = @tmp

RETURN @r
END

GO
SELECT dbo.CrearFecha(2013,7,4) Fecha
GO

Espero les pueda ser de utilidad.

1 comentario:

  1. Corregí algo.
    CREATE FUNCTION dbo.CrearFecha
    (@annio SMALLINT, @mes TINYINT, @dia TINYINT)
    RETURNS DATETIME AS
    BEGIN

    DECLARE @tmp CHAR(16), @r DATETIME
    SET @tmp = CAST(@annio AS CHAR(4)) + '-' + CAST(@mes AS CHAR(2)) + '-' + CAST(@dia AS CHAR(2))
    IF ISDATE(@tmp) = 0
    SET @r = NULL
    ELSE
    SET @r = @tmp

    RETURN @r
    END

    ResponderEliminar