Ankündigung

Einklappen
Keine Ankündigung bisher.

MySql Daten Auswerten für einen bestimmten Zeitraum

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySql Daten Auswerten für einen bestimmten Zeitraum

    Hallo an Alle hier,

    ich hoffe ihr könnt mir irgendwie helfen, denn ich scheine sehr auf dem Schlauch zu stehen.

    Folgendes Szenario liegt vor:

    es Existiert eine Datenbank (mysql), darin befinden sich verschiendene Daten welche ich jetzt Zeitraumsmäßig auswerten möchte.
    Der Einfachkeit halber, hatte ich ein kurze Script erfasst welches Startdatum und Anzahl der Tage Umfasste, habe dann die Daten aus der DB gelesen und addiert.
    Hat soweit alles Funktioniert.
    Jetzt möchte ich aber das der Benutzer Start Datum und End Datum angeben kann, und das Script dann die Daten daraus liest.

    Die Datenbank ist wie folgt aufgebaut:
    ID Datum Wert 1 Wert 2 Wert 3 Wert 4 Wert 5
    automatisch varchar varchar varchar varchar varchar varchar
    ... ttmmyyy
    1 18042018 1 1 1 1 1
    2 18042018 1 1 1 1 1
    3 18042018 1 1 1 1 1
    4 19042018 1 1 1 1 1
    5 19042018 1 0 1 1 0
    6 19042018 1 1 1 1 1
    7 20042018 0 1 0 0 1
    8 20402018 1 1 1 1 1
    Es stehen zwar andere Werte in der DB (nicht nur 1 und 0) aber ich glaube das ist für das Beispiel nicht Notwendig.

    Der Benutzer gibt nun als Start Datum 18.04.2018 und als End Datum 19.04.2018 an. Das PHP Script soll nun alle Werte je Spalte vom 18 und 19 Addieren.
    Das war bislang kein Problem wenn ich mit Startdatum und Anzahl Tage gearbeitet habe. Aber wie kann ich das nun mit 2x Datum erreichen?
    Die Eingabe des Datums erfolgt per Input (Typ Datum)

    Das Datum mit substr in die Form zu bringen wie ich es brauche hat funktioniert. Das Problem ist der Monatswechsel.
    Ich habe Quasi immer das Datum auseinander genommen, einen Tag hinzu addiert und weiter gelesen. Wenn jetzt aber der 01.05 ist, dann macht das Script
    immer 15 daraus, nimmt also die führende 0 raus und alles funktioniert nicht mehr.

    Ich habe im Internet eine MYSQL Funktion namens BETWEEN gefunden, habe sie noch nicht getestet, glaube aber das aufgrund meiner Formatierung der
    Tabelle wohl nicht funktionieren wird.

    Es muss doch eine Möglichkeit geben die Daten für einen Zeitraum aus der Datenbank zu lesen und zu addieren. Dabei muss ja die Anzahl der Tage berücksichtigt werden, die
    der Monat hat. Monatswechsel, vielleicht sogar Jahreswechsel. Ich finde keine Lösung, vielleicht kann mir hier jemand helfen.

    Grüße Kornkaefer


  • #2
    Nutze für das Datum eine der Datentypen welche MySQL dafür bereit hält (z.B. DATE) dann hast du die Probleme nicht. Datum als varchar mit deinem Format in der Datenbank ist Murx³.

    Edit: Ein wenig meher Sorgfalt wäre angebracht:
    Was soll
    ttmmyyy
    oder

    20402018

    ?
    PHP-Klassen auf github

    Kommentar


    • #3
      PHP-Code:
      $pdo->prepare('
       select spalte
       from tabelle
       where moment between ? and ? -- Spalte als datetime anlegen
      '
      );
      $pdo->execute([$_POST['start'], $_POST['end']]); // englisches Datum aus Formular, oder per DateTime aus deutschem Format umwandeln 
      You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

      Kommentar


      • #4
        Bevor man eine Datenbank anlegt, sollte man sich zumindest mit den Datentypen mal beschäftige haben, sonst wird das immer wieder zu Problemen führen
        Internationale Datums-Format.

        Kommentar


        • #5
          natürlich war es
          ddmmyyyy

          da ist mir doch glatt ein y unterwegs im Internet verloren gegangen.

          Ich habe die Datenbank entsprechend umgebaut, speichere das Datum jetzt als yyyy-mm-dd als Date

          BETWEEN abfrage funktioniert wie gewünscht.

          Danke nochmal und schönen Sonntag allen

          Kommentar

          Lädt...
          X