Sql/sqlserver/sp/stored procedure: Finne alle records laget en dag

No comments

Å finne start /slutt på en dag er et forholdsvis vanlig behov.

Her er to sqlscript for å lage to funksjoner som returner start og slutt på inndato.

(2 ms oppløsning på sluttdato…)

 

Lenger ned kan du se de i bruk:

 

CREATE  function dbo.StartOfDay

(

@Date DATETIME

)

RETURNS DATETIME

AS

BEGIN

RETURN DATEADD(d,DATEDIFF(d,0,@Date),0)

END

 

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

CREATE function dbo.EndOfDay

(

@Date DATETIME

)

RETURNS DATETIME

AS

BEGIN

RETURN DATEADD(ms,-2,DATEADD(d,1,dbo.StartOfDay(@Date)))

END

 

 

 

Denne prosedyren finner default alle poster laget i dag.

Bruker funksjonene over for å finne dagen i dag sin start og slutt:

 

USE [ENDATABASE]

GO

 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[HentHendelserVarslet]

      -- Add the parameters for the stored procedure here

      @FraDato DateTime = null,

      @Tildato DateTime =  null,

      @HendelseTypeID smallint = null

     

 

AS

BEGIN

IF @FraDato IS NULL

      SET @FraDato = dbo.StartOfday(GETDATE())

 

IF @Tildato IS NULL

      SET @Tildato= dbo.EndOfday(@FraDato)

 

      SET NOCOUNT ON;

 

    SELECT

            V.HendelseInformasjonID, I.HendelseTypeID,

            T.HendelseType, V.RaadgiverNr, V.Antall,

            V.LoggetDato,  I.Beskrivelse

      FROM   HendelseVarslet AS V

            INNER JOIN

                  HendelseInformasjon AS I

                  ON V.HendelseInformasjonID=I.HendelseInformasjonID

            INNER JOIN

                  HendelseType T

                  ON T.HendelseTypeId = I.HendelseTypeId

 

      WHERE

            V.LoggetDato>=@FraDato

            AND

            V.LoggetDato<=@TilDato

            AND        

            (I.HendelseTypeID=@HendelseTypeID OR @HendelseTypeID IS NULL)

                     

END

 

GO

 

 

Posted via email from Henris blogg

No comments :

Post a Comment