Posts
251
Comments
74
Trackbacks
4
Zeitspannen bzw. Datumsgrenzen für Reports oder statistische Auswertungen

Manchmal benötigt man für Reports oder statistische Auswertungen verschiedene Zeitspannen, bzw. Datumsgrenzen.

Im SQL-Server kann man dies auch über über eine Funktion lösen. Diese Function gibt 4 Datums (StartVorjahr, EndeVorjahr, Startjahr, Endejahr) in Form einer Tabelle zurück:

CREATE

FUNCTION fGetGrenzDaten

      (

)

RETURNS @Daten

TABLE (
StartVorjahr datetime,
EndeVorjahr
datetime,
StartJahr datetime,
EndeJahr datetime)

AS

BEGIN

Declare

@Tmp varchar(10)
Declare @Dat1 varchar(10)

Declare

@VorJahr datetime
Declare
@VorJahrEnd datetime
Declare
@Jahr datetime
Declare
@JahrEnd datetime
Declare
@Datum dateTime
Set
@Datum = GETDATE()

---

Set

@Jahr = dateAdd(mm,-12,@Datum)
Set @Tmp = Right('0' + cast(Month(@Jahr) as varchar(2)),2)
Set @Dat1 = @Tmp + '-01-'
Set @Tmp = cast(year(@Jahr) as varchar(4))
Set @Dat1 = @Dat1 + @Tmp
Set @Jahr = convert(Datetime,@Dat1,110)
Set @JahrEnd = dateAdd(mm,-1,@Datum)
Set @Tmp = Right('0' + cast(Month(@JahrEnd) as varchar(2)),2)
Set @Dat1 = @Tmp + '-30-'
Set @Tmp = cast(year(@Datum) as varchar(4))
Set @Dat1 = @Dat1 + @Tmp
Set @JahrEnd = convert(Datetime,@Dat1,110)
Set @Vorjahr = dateAdd(yy,-1,@Jahr)
Set @VorjahrEnd = dateAdd(yy,-1,@JahrEnd)

 

Insert into @Daten
Select @Vorjahr,@VorjahrEnd,@Jahr,@JahrEnd

 

 

RETURN

END

Die Datums-Werte dieser Function lassen sich per INNER JOIN in einen SELECT einbinden:

inner

join (Select StartVorjahr, EndeVorjahr, StartJahr,
EndeJahr from fGetGrenzDaten()) as Datum on RECHDAT between StartVorjahr and EndeJahr
posted on Monday, July 02, 2007 8:32 AM Print
Comments
No comments posted yet.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 7 and 2 and type the answer here: