Between Datumsabfrage mit mehreren Einträgen

Maltes

Benutzer
Beiträge
5
Hallo zusammen,

ich habe die folgende Fragestellung. In der Tabelle [avp].[PKWReservierung] habe ich ein Start Datum = DatumBeginn und ein End Datum = DatumEnde.

Nun möchte ich eine Abfrage erstellen in der Ich auch ein DatumBeginn und ein DatumEnde habe und das Ergebnis spuckt mir alle Datensätze aus die In diesem Datums Range liegen. So wollte ich es lösen.

DECLARE
@DateBeginn Date,
@DateEnde Date

SET @DateBeginn = '2023-01-17';
SET @DateEnde = '2023-01-19';

SELECT DatumBeginn, DatumEnde

FROM [avp].[PKWReservierung]

Where ((@DateBeginn Between DatumBeginn and DatumEnde)
OR (@DateEnde Between DatumBeginn and DatumEnde))
OR
((DatumBeginn Between @DateBeginn and DatumEnde)
OR (DatumEnde Between @DateBeginn and DatumEnde))

Das ist dann das Ergebnis und dort wo ich den Text Farblich Markiert habe stimmt das nicht. Wisst ihr warum?
DatumBeginn DatumEnde
2023-02-10 2023-02-20
2023-01-01 2023-01-23
2022-12-20 2023-11-25
2022-12-20 2023-11-22
2022-12-20 2023-11-22
2022-12-19 2023-02-10
2023-03-24 2023-03-27
2023-01-18 2023-01-19
2023-01-15 2023-01-20
2023-03-24 2023-03-31
2023-02-09 2023-02-10
2023-02-01 2023-02-01
 
Zuletzt bearbeitet:
Werbung:
Du prüfst alles "einzeln" ab, also mir OR.
Vielleicht möchtest Du aber, dass alle Bedingungen zusammen gelten, also nimm AND.
 
Vielleicht schaust dir mal dein letztes OR an und was du da genau abfragst
OR (DatumEnde Between @DateBeginn and DatumEnde))


Was mir nicht klar ist, ist warum du die Zeile markierst. Die erscheint mir richtig.

2023-01-18 2023-01-19

Hoffentlich haut es damit hin:

SQL:
DECLARE @DateBeginn DATE
    ,@DateEnde DATE

SET @DateBeginn = '2023-01-17';
SET @DateEnde = '2023-01-19';

SELECT DatumBeginn
    ,DatumEnde
FROM [avp].[PKWReservierung]
WHERE
        (DatumBeginn <= @DateBeginn AND DatumEnde >= @DateEnde)
        OR                 
        DatumBeginn BETWEEN @DateBeginn AND @DateEnde
        OR
        DatumEnde BETWEEN @DateBeginn AND @DateEnde

SG
 
Eigentlich müssten schon die ersten beiden Bedingungen ausreichen, die decken alles ab wo sich die beiden Zeiträume in mindestens einem Punkt überschneiden.
Code:
Where ((@DateBeginn Between DatumBeginn and DatumEnde)
OR (@DateEnde Between DatumBeginn and DatumEnde))
Nur wenn du jetzt prüfen willst ob der ganze Zeitraum im anderen Zeitraum liegt müsste man anders vor gehen.
 
Werbung:
Zurück
Oben