Para la conferencia de Pass Alemania, donde presento la sesión “Empower your users with an OUTSTANDING Time Dimension” escribí las siguientes funciones de fecha, que obtienen el primer y último día de un mes, trimestre o año, hay que tener cuidado de donde las usas para no estropear el desempeño:

 

CREATE FUNCTION FirstDayOf (@Date SMALLDATETIME, @Period VARCHAR(10) )

        — Must not have hour or minute

RETURNS SMALLDATETIME

AS

BEGIN

— @Date Must not have hours or minutes

— @Period IN (‘Month’, ‘Quarter’, ‘Year’)

    RETURN

    CASE @Period

        WHEN ‘Month’ THEN DATEADD(DD, 1 DAY(@Date), @Date)

        WHEN ‘Quarter’ THEN DATEADD(Month, 1 MONTH(@Date)

                             + (3*(DATEPART(Quarter, @Date)-1))

                             , DATEADD(DD, 1 DAY(@Date), @Date))

        WHEN ‘Year’         THEN DATEADD(Month, 1MONTH(@Date), DATEADD(DD, 1 DAY(@Date), @Date))

        END

END

GO

 

CREATE FUNCTION LastDayOf(@Date SMALLDATETIME, @Period VARCHAR(10) )    

RETURNS SMALLDATETIME

AS

BEGIN

— @Date Must not have hours or minutes

— @Period IN (‘Month’, ‘Quarter’, ‘Year’)

    RETURN

    CASE @Period

        WHEN ‘Month’    THEN DATEADD(DD, 1, DATEADD(Month, 1,dbo.FirstDayOf(@Date, ‘Month’)))

        WHEN ‘Quarter’    THEN DATEADD(DD, 1, DATEADD(Month, 3,dbo.FirstDayOf(@Date, ‘Quarter’)))

        WHEN ‘Year’        THEN DATEADD(DD, 1, DATEADD(YEAR, 1,dbo.FirstDayOf(@Date, ‘Year’)))

        END

END

go

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like

Mantenimiento de SQL Server para Dummies

Cuando tomamos control de un servidor SQL Server en Flex Services, nosotros como operadores tenemos que sentirnos seguros con lo que estamos asumiendo. Para ello, hacemos un análisis del servidor donde revisamos elementos importantes del servidor como configuración del SQL, planes de mantenimiento, etc. En esta sesión, te enseñaremos lo importante de los diversos elementos básicos que revisamos para asegurarnos que tomamos el control de un servidos SQL Server que no nos va a dar sorpresas.