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
Leer más

SQL Server downgrades: Enterprise Edition a Standard Edition

Un problema habitual al que nos tenemos que enfrentar es el realizar downgrades de SQL Server Enterprise Edition a Standard Edition. Las razones pueden ser desde un error cuando se realizó el despliegue inicial hasta un cambio para obtener una reducción de costes en licenciamiento. La forma soportada para realizar este cambio pasa por una desinstalación completa de la instancia y una reinstalación.