# MYSQL Abfrage: Daten die in bestimmten Zeitraum sind, anfangen oder enden



## Webmensch (18. August 2015)

Hey Leute,
ihr merkt vielleicht schon, dass ich meine Frage nicht richtig formulieren kann um in Google danach zu suchen, deswegen hoffe ich hier auf Hilfe.

Ich habe eine Seite die Abwesenheitsmeldungen anzeigt. Vorgeschaltet ist der Seite eine Andere, auf der man via Datepicker einen Zeitraum auswählen kann. Das klappt alles wunderbar, doch jetzt sollten alles Datensätze angezeigt werden, die in diesem Zeitraum beginnen, enden oder während dieses Zeitraums stattfinden.

Bsp.:

Abwesend vom 17.8.15 bis zum 20.8.15
Abwesend am 18.8.15
Abwesend vom 15.8.15 bis zum 23.8.15
Abwesend vom 14.8.15 bis zum 17.8.15

Ich wähle jetzt den Zeitrum 16.8.15 bis 20.8.15 aus.
Wie schaffe ich es, dass jetzt alles 4 Datensätze angezeigt werden ?

Noch ein Erklärungsversuch:
Es soll quasi überprüft werden, ob die Leute an jedem einzelnen der Tag, die in der ausgewählten Zeitspanne liegen, da ist. Und wenn nicht dann diese Datensätze ausgeben.


----------



## youza (18. August 2015)

Was benutzt du (PHP, Java, JavaScript, JQuery oder ...) wie sehen die Tabellen aus?
Hast du schon eine Anfrage auf der Datenbank die funktioniert und mit der du Daten auf deiner Website erhälst?

Anders gefragt:

geht es nur um den SQL-Befehl?


----------



## Webmensch (18. August 2015)

Oh, das hab ich vergessen anzugeben, tut  mir leid.
Es ist ein ein PHP Script eingebunden.



```
$datuma = (isset($_POST['datuma'])) ? $_POST['datuma'] : ""; 
        $datumb = (isset($_POST['datumb'])) ? $_POST['datumb'] : "";
        $array1 = explode('.', $datuma);
        $array2 = explode('.', $datumb);
        $standort = (isset($_POST['standort'])) ? $_POST['standort'] : "";

          mysql_connect('localhost', 'root', '') or die(mysql_error());
          mysql_select_db('wechdadb') or die(mysql_error());

        $abfrage = "SELECT ID ,geloescht,name,DATE_FORMAT(von, '%d.%m.%y') AS von2, DATE_FORMAT(bis, '%d.%m.%y') AS bis2,grund,werk FROM abmeld WHERE ( geloescht LIKE '' and ((von >= '$array1[2]-$array1[1]-$array1[0]' and von <= '$array2[2]-$array2[1]-$array2[0]')  or(bis >= '$array1[2]-$array1[1]-$array1[0]' and bis <= '$array2[2]-$array2[1]-$array2[0]')) and (werk = '$standort' OR '$standort'= 'Alle')) ORDER BY von ";
        $query = mysql_query($abfrage) or die(mysql_error());
```

Das mit den Arrays habe ich so gemacht, da man in MYSQL ja nur die US-Datenanzeige machen kann, ich aber die deutsche brauche.


----------



## Yaslaw (18. August 2015)

Ich habe vor einigen Jahren mal ein Wiki-Eintrag zu dieser Anforderung geschrieben: MySQL Perioden vergleichen


----------



## Webmensch (18. August 2015)

Yaslaw hat gesagt.:


> Ich habe vor einigen Jahren mal ein Wiki-Eintrag zu dieser Anforderung geschrieben: MySQL Perioden vergleichen


Den werde ich mir mal zu Gemüte führen 

Ich glaube das ist nicht ganz das was ich brauche ( oder ich steige nicht dahinter ...)

Es müsste so sein, dass zusätzlich zur normalen Ausgabe die ganzen Datensätze in der Datenbank überprüft werden ob sie sich mit dem angegebenen Zeitraum überschneiden und die dann auch ausgeben.


----------

