Maximalen Wert zwischen Datum herausfinden

logan517

Benutzer
Beiträge
14
Nabend,

ich habe folgende Datenbank (hier ein Auszug davon)
asw_tbl.PNG

Nun gebe ich ein Datum an, z.B. 02.08.2015.
Das Programm soll mir dann den maximalen Wert von PA_Anzahl ausgeben, allerdings nur in der Zeit +- 5 Tage (das Gesperrt Feld)
Also soll alles 28.07.2015 bis 07.08.2015

Ich daten ich mache das mit einem Between, allerdings bekomme ich gar keine Rückgabe, doch diese sollte 4 betragen.

Code:
DECLARE @Datum datetime;
SET @Datum = CONVERT(DATETIME,'02.08.2015', 104);

DECLARE @Sperrzeit int;
SET @Sperrzeit = (SELECT Gesperrt FROM [Feuerwehrserver].[dbo].[asw_pa_ausleihe] WHERE CONVERT(DATETIME,Datum, 104) = @Datum);

SELECT MAX(PA_Anzahl)
    FROM [Feuerwehrserver].[dbo].[asw_pa_ausleihe]
    WHERE (CONVERT(DATETIME,Datum, 104) = @Datum)
    AND CONVERT(DATETIME,Datum, 104)
        BETWEEN
            DATEADD(day, -@Sperrzeit, @Datum)
        AND   
            DATEADD(day, +@Sperrzeit, @Datum)
(Bitte nicht wundern, die Tabelle besteht aus Int und Varchar, und nicht aus Datetime. Ist nicht von mir erstellt worden und lässt sich nun nicht mehr so einfach Ändern. Sollte aber auch nicht das Problem darstellen).

Wahrscheinlich hab ich nur en dummen Denkfehler drinnen, nur komme da grad nicht mehr weiter.

Hoffe ihr könnt mir da weiterhelfen.
Grüße
Logan517
 
Werbung:
Nun gebe ich ein Datum an, z.B. 02.08.2015.
Das Programm soll mir dann den maximalen Wert von PA_Anzahl ausgeben, allerdings nur in der Zeit +- 5 Tage (das Gesperrt Feld)
Also soll alles 28.07.2015 bis 07.08.2015

Ich daten ich mache das mit einem Between, allerdings bekomme ich gar keine Rückgabe, doch diese sollte 4 betragen.

Code:
    WHERE (CONVERT(DATETIME,Datum, 104) = @Datum)
    AND CONVERT(DATETIME,Datum, 104)
        BETWEEN
            DATEADD(day, -@Sperrzeit, @Datum)
        AND  
            DATEADD(day, +@Sperrzeit, @Datum)

Du hast den 1., 4. und 6. 8 und 28.7 drin und hast hast bedingung, daß Du nach dem 2.8. szcjst (erste Bedingung, nicht erfüllt) UND es zwischen +/- 5 Tage davor/danach sein soll. Das ist zwar erfüllt, aber Du hast 2 Conditions, wovon nur eine erfültt ist und beide via AND verbunden sind -> Bedingung nicht erfüllt.


Kaffee!
 
Werbung:
Jup, Kaffee wär nicht schlecht gewesen.

Habs mal Rot markiert woran es gelegen hat, wenn ich das entferne, gehts.
Ist ja fast schon peinlich der Fehler.
Da war mein Denkfehler wohl, dass ich +- 5 Tage suche und eben das Datum


Danke
Grüße

DECLARE @Datum datetime;
SET @Datum = CONVERT(DATETIME,'02.08.2015', 104);

DECLARE @Sperrzeit int;
SET @Sperrzeit = (SELECT Gesperrt FROM [Feuerwehrserver].[dbo].[asw_pa_ausleihe] WHERE CONVERT(DATETIME,Datum, 104) = @Datum);

SELECT MAX(PA_Anzahl)
FROM [Feuerwehrserver].[dbo].[asw_pa_ausleihe]
WHERE (CONVERT(DATETIME,Datum, 104) = @Datum)
AND
CONVERT(DATETIME,Datum, 104)
BETWEEN
DATEADD(day, -@Sperrzeit, @Datum)
AND
DATEADD(day, +@Sperrzeit, @Datum)
 
Zurück
Oben