MySQL-Abfrage, um Ereignisse zwischen Start- / Enddatum auszuwählen

8

Ich habe eine MySQL-Tabelle namens 'events', die Ereignisdaten enthält. Die wichtigen Spalten sind 'start' und 'end', die eine Zeichenfolge (YYYY-MM-DD) enthalten, die angibt, wann die Ereignisse beginnen und enden.

Ich möchte die Datensätze für alle aktiven Ereignisse in einem bestimmten Zeitraum abrufen.

Veranstaltungen:

%Vor%

Anfrage / Suche:

%Vor% %Vor%

Ich habe viele Abfragen ausprobiert, aber ich bekomme die genaue SQL-Abfrage nicht.

Weißt du nicht, wie das geht? Irgendwelche Vorschläge?

Danke!

    
Guicara 09.06.2013, 20:53
quelle

8 Antworten

16

Wenn ich richtig verstanden habe, dass Sie versuchen, eine einzelne Abfrage zu verwenden, können Sie Ihre Datumssuche einfach in WHERE clauses

zusammenführen %Vor%

oder noch einfacher: Sie können einfach beide Spalten verwenden, um den Filter für die Suchzeit festzulegen

%Vor%     
Fabio 09.06.2013, 21:01
quelle
10

Sie benötigen die Ereignisse, die innerhalb des Bereichs beginnen und enden. Aber das ist noch nicht alles: Sie möchten auch die Ereignisse, die innerhalb des Bereichs beginnen, und die Ereignisse, die im Bereich enden. Aber dann sind Sie immer noch nicht da, weil Sie auch die Ereignisse möchten, die vor dem Bereich beginnen und nach dem Bereich enden.

Vereinfacht:

  1. Ereignisse mit einem Startdatum im Bereich
  2. Ereignisse mit einem Enddatum im Bereich
  3. Ereignisse mit dem Bereich Startdatum zwischen Startdatum und Enddatum

Da Punkt 2 zu Datensätzen führt, die auch die Abfrage in Punkt 3 erfüllen, benötigen wir nur die Punkte 1 und 3

So wird SQL zu

%Vor%     
Peter de Groot 25.09.2014 09:35
quelle
4

Hier viele gute Antworten, aber ich denke, das wird jemandem helfen

%Vor%     
Saurabh Chandra Patel 10.05.2017 05:24
quelle
2
%Vor%

Oder verwenden Sie MIN() und MAX() , wenn Sie die Priorität nicht kennen.

    
Olivier Coilland 09.06.2013 21:01
quelle
1

Ich gehe davon aus, dass aktive Ereignisse in einem Zeitraum bedeuten, dass mindestens ein Tag des Ereignisses in den Zeitraum fällt. Dies ist ein einfaches Problem "überlappende Daten finden" und es gibt eine generische Lösung:

%Vor%

Einige Tests:

%Vor%     
Salman A 08.12.2017 11:12
quelle
1
%Vor%     
Philip Sheard 09.06.2013 21:00
quelle
0

probiere das

aus %Vor%

DEMO HIER

Ausgabe:

%Vor%     
echo_Me 09.06.2013 21:00
quelle
0

Wenn Sie die Option INTERSECT verwenden möchten, ist die SQL wie folgt

%Vor%     
bkm 04.02.2015 18:28
quelle

Tags und Links