Sql/sqlserver/sp/stored procedure: Finne alle records laget en dag
Å 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