Ankündigung

Einklappen
Keine Ankündigung bisher.

DB Eintrag (Datum) um x Tage erhöhen und vergleichen

Einklappen

Neue Werbung 2019

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

  • DB Eintrag (Datum) um x Tage erhöhen und vergleichen

    In der Tabelle gibt es eine Spalte geaendert. Diese ist lt. Sturktur vom Typ datetime.

    In diesen Zellen befinden sich Werte wie "2018-05-19 06:05:00".

    Ich möchte nun diesen Wert um 7, 30, 90 und 180 Tage erhöhen.

    Ich habe schon alles mögliche probiert und scheitere meist an

    Warning: date_modify() expects parameter 1 to be DateTime, string given in ...

    Ich habe verschiedene Tutorials gelesen. Diese basieren meist auf dem aktuellen Datum. Deshalb brauche ich mal Hilfe, wo mein (Denk)Fehler liegt.

    Bitte seid nachsichtig, ich fange quasi erst mit PHP an und suche mir alles aus dem Netz zusammen.


    Einschub

    Auf einer Plattform gibt es ein Datenbanksystem, in welchem die 'Seite' bereits funktioniert.

    Dort sieht das, was ich nun in php machen will, wie folgt aus:

    HTML-Code:
    $DatumPlaetzeKurz = datum("$geaendert+7", "Jahr-Monat0-Tag0");
    $DatumPlaetze = datum("$geaendert+30", "Jahr-Monat0-Tag0"); 
    $DatumPlaetzeLang = datum("$geaendert+90", "Jahr-Monat0-Tag0");
    Zusatzfrage

    Da noch einige Variablen gefüllt werden sollen, schreibe ich mal die nachfolgenden Befehle auch noch mit hin:

    HTML-Code:
    $KundenVorbehalten = $DatumJetzt <= $DatumPlaetzeKurz;
    $Kontaktmoeglich1 =  $DatumPlaetzeLang > $DatumJetzt;
    $Kontaktmoeglich = $Kontaktmoeglich1 | $KundenVorbehalten ;

    Es wäre echt super, wenn Ihr mir auch bei dem Vergleichen helfen könntet. Gern auch mit einer Erklärung, damit ich das das nächste Mal selbst machen kann.

  • #2
    um x Tage erhöhen und vergleichen ...
    lt. Sturktur vom Typ datetime.
    Na dann lass das doch direkt die DB machen. Was hast du damit noch vor?

    https://dev.mysql.com/doc/refman/5.5...ction_date-add

    Ansonsten der PHP-Weg: https://php-de.github.io/jumpto/datetime/ Dort findest du viele Beispiele die du direkt übernehmen und anpassen kannst.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      PHP-Code:
      $dateTime = new DateTime('2018-05-19 06:05:00');
      $dateTime->modify('+7 days'); 

      Kommentar


      • #4
        Oh. Vielen Dank. Das ging ja ganz schnell.

        Zitat von hellbringer Beitrag anzeigen
        PHP-Code:
        $dateTime = new DateTime('2018-05-19 06:05:00');
        $dateTime->modify('+7 days'); 
        so ähnlich hatte ich das vorhin

        PHP-Code:
        $DatumPlaetzeKurz = new DateTime($datensatz['geaendert']);
        $DatumPlaetzeKurz->modify('+7 days'); 
        Recoverable fatal error: Object of class DateTime could not be converted to string in ...

        Kommentar


        • #5
          Zitat von thomaskujawa Beitrag anzeigen
          so ähnlich hatte ich das vorhin

          PHP-Code:
          $DatumPlaetzeKurz = new DateTime($datensatz['geaendert']);
          $DatumPlaetzeKurz->modify('+7 days'); 
          Recoverable fatal error: Object of class DateTime could not be converted to string in ...
          Der Fehler passiert aber nicht in den zwei Zeilen.

          Kommentar


          • #6
            ... und da wo der Fehler passiert, musst du explizit mit $dein_datetime_objekt->format(...) nach String konvertieren.

            http://php.net/manual/de/datetime.format.php
            [I]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.[/I]

            Kommentar


            • #7
              Zitat von hellbringer Beitrag anzeigen

              Der Fehler passiert aber nicht in den zwei Zeilen.
              Sorry. Richtig.

              Es liegt an meiner 'Prüfausgabe'.

              PHP-Code:
              echo 'kurz '.$DatumPlaetzeKurz.'<br/>';
              echo 
              'normal'.$DatumPlaetze.'<br/>';
              echo 
              'lang'.$DatumPlaetzeLang.'<br />'
              Ja. Jetzt geht die Prüfausgabe.

              PHP-Code:
              echo 'kurz '.$DatumPlaetzeKurz->format('Y-m-d').'<br/>';
              echo 
              'normal'.$DatumPlaetze->format('Y-m-d').'<br/>';
              echo 
              'lang'.$DatumPlaetzeLang->format('Y-m-d').'<br />'

              Kommentar


              • #8
                Wie von hausl vorgeschlagen, würde ich das auch die DB machen lassen

                Mysql
                Code:
                SELECT
                    `id`,
                    CAST(DATE_ADD(`geaendert`, INTERVAL 7 DAY) as date) as `Woche`,
                    CAST(DATE_ADD(`geaendert`, INTERVAL 30 DAY) as date) as `Monat`,
                    CAST(DATE_ADD(`geaendert`, INTERVAL 90 DAY) as date) as `Quartal`,
                    `inhalt`
                FROM
                    `test`";
                SQLFiddle dazu

                Kommentar


                • #9
                  Vielen Dank nochmal.

                  Ich habe erst ein bisschen gebraucht, zu verstehen, wie ich das für mich umsetzen kann.

                  Da ich ja Anfänger bin, fragte ich mich zum Beispiel, wie ich das Select * mit dem obigen kombinieren kann.

                  Das habe ich nun alles hinbekommen.

                  Aber

                  Wie kann ich denn nun mein $DatumPlaetze ( aus $datensatz['DatumPlaetze'] ) mit dem $DatumJetzt (aus date("Y-m-d",time()) ) vergleichen?

                  Denn

                  PHP-Code:
                  if ($DatumJetzt <= $DatumPlaetzeKurz) {$KundenVorbehalten 1; echo 'Kunden vorbehalten <br/>';} 
                  füllt die Variable nicht.

                  Meine Vermutung: Irgendwas mit dem Format von $DatumJetzt stimmt nicht.

                  Kommentar


                  • #10
                    füllt die Variable nicht.
                    Ja dann weisst du an der Stelle doch schon, dass deine Bedingung nicht greift. Also guckst du halt erstmal mit var_dump() nach, was in den Variablen steht.
                    [I]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.[/I]

                    Kommentar


                    • #11
                      Zitat von chorn Beitrag anzeigen

                      Ja dann weisst du an der Stelle doch schon, dass deine Bedingung nicht greift. Also guckst du halt erstmal mit var_dump() nach, was in den Variablen steht.
                      Ist ja ein echter Anfängerfehler. Danke für den Hinweis.

                      Ist gelöst. Und wie hausl und protestix vorgeschlagen, macht es jetzt die MySQL Abfrage.

                      Kommentar

                      Lädt...
                      X