Posts
391
Comments
137
Trackbacks
0
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 7 and type the answer here: