----------------------------------------------- -- Funciones básicas para el manejo de fechas en Microsoft SQL Server -- Autor original: David García ----------------------------------------------- -- Devolver un tipo de datos DATETIME formado -- por el año, mes y dia pasados por parámetro: CREATE FUNCTION [dbo].[Date](@Year int, @Month int, @Day int) returns datetime as begin return dateadd(day, @Day-1, dateadd(month, @Month-1, dateadd(year, (@Year-1900),0))) end go ------------------------------------------------ -- Eliminar la hora de la fecha @DateTime y la -- devuelve solo con la fecha: CREATE FUNCTION [dbo].[DateOnly](@DateTime DateTime) returns datetime as begin return dateadd(dd,0, datediff(dd,0,@DateTime)) end go ------------------------------------------------ -- Devolver un DATETIME completo, incluyendo la -- hora, minuto y segundo pasados por parametro: CREATE FUNCTION [dbo].[DateTime](@Year int, @Month int, @Day int, @Hour int, @Minute int, @Second int) returns datetime as begin return dbo.Date(@Year,@Month,@Day) + dbo.Time(@Hour, @Minute,@Second) end go ------------------------------------------------ -- Devolver un DATETIME con la Hora, Minuto y -- Segundo pasados por parámetro, tomando como -- Fecha Base el dia (1/1/1900): CREATE FUNCTION [dbo].[Time](@Hour int, @Minute int, @Second int) returns datetime as begin return dateadd(hour, @Hour, 0) + dateadd(minute, @Minute,0) + dateAdd(second, @Second,0) end go ------------------------------------------------ -- Devolver solamente la parte Hora,Minuto y -- Segundo de la fecha pasada por parámetro, -- tomando como base la fecha (1/1/1900): CREATE FUNCTION [dbo].[TimeOnly](@DateTime DateTime) returns datetime as begin return @DateTime - dbo.DateOnly(@DateTime) end go