Ernst Eiswürfel: Tage zu Datum addieren mit mysql-fake?

Hi,

Wenn ich auf ein Datum x Tage hinzu addieren möchte, ist es dann einfacher, dass über php-timestamp und Zurückrechnen zu machen oder ist es nicht dann sogar einfacher, es über irgendeine Fake-mysql-Tabelle zu machen. Fake, damit meine ich eine temporäre oder oder auch ganz normale Tabelle anlegen, die keine andere Funktion hat als o.g. Funktion?

Ernst

  1. Hi,

    Wenn ich auf ein Datum x Tage hinzu addieren möchte, ist es dann einfacher, dass über php-timestamp und Zurückrechnen zu machen oder ist es nicht dann sogar einfacher, es über irgendeine Fake-mysql-Tabelle zu machen.

    Wenn ich erst MySQL installieren müsste, wäre es dann immer noch „einfacher“?

    Deine Frage ist so nicht beantwortbar.

    Fake, damit meine ich eine temporäre oder oder auch ganz normale Tabelle anlegen, die keine andere Funktion hat als o.g. Funktion?

    Wozu eine Tabelle?

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Wozu eine Tabelle?

      Stimmt.
      Den Eintrag selber brauchts ja gar nicht.

  2. Tach!

    Wenn ich auf ein Datum x Tage hinzu addieren möchte, ist es dann einfacher,

    Das kommt ganz drauf an, wo du das Ergebnis brauchst. Und es ist in beiden Systemen ziemlich einfach. PHP: strtotime(), MySQL: DATE_ADD().

    dedlfix.

    1. Das kommt ganz drauf an, wo du das Ergebnis brauchst. Und es ist in beiden Systemen ziemlich einfach. PHP: strtotime(), MySQL: DATE_ADD().

      Ja, hast recht. Vielleicht sind mir die Datum- und Zeitfunktionen von mysql einfach sympathischer...

      Ernst

  3. Wenn ich auf ein Datum x Tage hinzu addieren möchte, ist es dann einfacher, dass über php-timestamp und Zurückrechnen zu machen oder ist es nicht dann sogar einfacher, es über irgendeine Fake-mysql-Tabelle zu machen

    Was spricht denn (seit PHP 5.2) gegen das einfache date_add?

    <?php  
    $date = new DateTime('2000-01-31');  
    $iTage=3;  
    $date->add(new DateInterval('P'.$iTage.'D'));  
    echo $date->format('Y-m-d');  
    ?>
    

    2000-02-03

    Ich denke, MySQL zu (miss)brauchen hat sich damit erübrigt.

    Jörg Reinholz

    1. Hi Jörg (ab sofort unter echtem Namen? Cool)

      Was spricht denn (seit PHP 5.2) gegen das einfache date_add?

      Nichts.

      Aber gegen

      Fatal error: Call to undefined method DateTime::add() in ...

      spricht alles.

      Ernst

      1. Hi Jörg (ab sofort unter echtem Namen? Cool)

        Was spricht denn (seit PHP 5.2) gegen das einfache date_add?

        Nichts.

        Aber gegen

        Fatal error: Call to undefined method DateTime::add() in ...

        spricht alles.

        Ernst

        Dann hilft, so lange niemand auf die SEHR GUTE Idee kommt, ein halbwegs aktuelles PHP ( >= 5.2 ) zu installieren, das folgende:

        <?php  
        function HelperAddDays($date, $days=0, $format='Y-m-d H:i:s') {  
           /**  
           # $date: Format Y-m-d H:i:s oder Y-m-d  
           # $days: Integer (positiv oder negativ)  
           # $format format für Ausgabe - http://php.net/manual/en/function.date.php  
           # return: Datum oder false (im Fehlerfall)  
           **/  
          
           if (($timestamp = strtotime($date)) === false) {  
              #(Deine Fehlerroutine) oder  
              return false;  
           } else {  
              if (0==intval($days)) {  
                 if (0==$days) {  
                    return date($format,$timestamp);  
                 }  
              } else {  
                 $time=$timestamp+(60*60*24*$days);  
                 return date($format,$time);  
              }  
           }  
          
        }  
          
          
        #Test:  
        $datum=HelperAddDays('2011-1-1',-1);  
        if ($datum) {  
           echo $datum;  
        } else {  
           #(Deine Fehlerroutine) oder  
           echo 'Fehler in ' . __FILE__ . ', Zeile ' . (__LINE__ -5).', bei der Datumsübergabe an HelperAddDays(). Der Wert für das Datum ist ungültig.';  
        }
        

        Das dürfte auch schneller sein als erst noch die Datenbank zu fragen. Es sei denn Du willst das direkt bei der Eingabe oder Ausgabe aus der Datenbank mit erledigen.

        Jörg Reinholz

        1. Dann hilft, so lange niemand auf die SEHR GUTE Idee kommt, ein halbwegs aktuelles PHP ( >= 5.2 ) zu installieren

          Sorry, ich vergaß, zu erwähn en:

          [PHP: 5.2.9]

          Nicht aktuell genug?

          Ernst

          1. [PHP: 5.2.9]

            Dann frage ich mich, warum (und wie) der Betreiber des Hosts das rauskompiliert hat.

            1. Tach!

              [PHP: 5.2.9]
              Dann frage ich mich, warum (und wie) der Betreiber des Hosts das rauskompiliert hat.

              Was denn? Die erst seit 5.3.0 vorhandene Methode DateTime::add() muss man in Version 5.2.9 nicht erst noch rauskompilieren.

              In dieser Version kann man aber sehr einfach DateTime::modify() verwenden. Und außerdem ist die Annahme, ein Tag habe 60*60*24 Sekunden nicht in allen Gegenden richtig.

              dedlfix.

              1. Was denn? Die erst seit 5.3.0 vorhandene Methode DateTime::add() muss man in Version 5.2.9 nicht erst noch rauskompilieren.

                Simmt. Ich hatte die falsche Stelle erwischt.

                Und außerdem ist die Annahme, ein Tag habe 60*60*24 Sekunden

                Stimmt auch. Wobei aber zu beachten ist, dass Tage nicht unterschiedlich lang, sondern unterschiedlich breit sind.

              2. Und außerdem ist die Annahme, ein Tag habe 60*60*24 Sekunden nicht in allen Gegenden richtig.

                Außerdem wird dateAdd je nach locale-Einstellung vermutlich nicht richtig funktionieren - wenn das System bayrisch eingestellt ist, addiert dateAdd nicht sondern subtrahiert. In Bayern gehen die Uhren anders :p

          2. [latex]Mae  govannen![/latex]

            Sorry, ich vergaß, zu erwähn en:

            [PHP: 5.2.9]

            2009-02-26

            Nicht aktuell genug?

            Nein. Eher „antik“.

            Stur lächeln und winken, Männer!
            Kai

            --
            var jQuery = $(hit);
            Wir sind die Schlumpf. Widerschlumpf ist schlumpflos. Wir werden Sie einschlumpfen.
            SelfHTML-Forum-Stylesheet