Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Altersberechnungsproblem mit Datenbank

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Altersberechnungsproblem mit Datenbank

    Guten Morgen zusammen hab gerade ein Problem was ich derzeit nicht gelöst kriege vielleicht zu müde, keine ahnug jedenfalls habe ich in einer MySQL Datenbank ein Geburtsdatum abgespeichert im Format YYYY-MM-DD nun will ich daraus das alter berechnen bekomm es aber nicht hin. Ich weiß selbst nur wie ich das hinbekommen wenn ich das Jahr, Monat, Tag einzeln als Variable habe. Aber nicht in diesen Format.

    Ich hoffe einer weiß eine Lösung, danke schonmal vorab.

    Kers

  • #2
    Code:
    SELECT
        @gebtag := DAYOFMONTH(datum),
        @gebmonat := MONTH(datum),
        @gebjahr := YEAR(datum),
        @akttag := DAYOFMONTH(NOW()),
        @aktmonat := MONTH(NOW()),
        @aktjahr := YEAR(NOW()),
        IF(@gebmonat > @aktmonat OR @gebmonat = @aktmonat AND @gebtag >= @akttag, @aktjahr - @gebjahr, @aktjahr - @gebjahr - 1) AS alter
    FROM
        tabelle

    Kommentar


    • #3
      Oder du möchtest das Ganze in PHP ausrechnen, für diesen Fall:
      PHP-Code:
      <?php
      function calculateAge($timestamp) {
               
      // Gibt das Alter in Jahren zurück
               
      $age floor(((time() - $timestamp) / 60 60 24 365.25));
               return 
      $age;
      }
      ?>

      Kommentar


      • #4
        Die PHP-Funktion ist relativ ungenau (wegen 365.25 und so), wenn es um die Abfrage aus der DB geht, reicht
        Code:
        SELECT  YEAR( NOW() ) - YEAR( geburtsdatum )
                - ( DATE_FORMAT( NOW(), "%m%d" ) < DATE_FORMAT( geburtsdatum, "%m%d" ) )
        FROM tabelle;

        Kommentar


        • #5
          du kannst das ganze auch aufsplitten, dann hast wieder deine variablen:


          PHP-Code:
          <?php
          // $gebdat enthält das Geburtsdatum in der form YYYY-MM-DD
            
          $dates explode("-",$gebdat);
          //  dann bekommst ein array mit den variablen:
          //  $dates['0']... das is Jahr, $dates['1']... das Monat, $dates['2']... der Tag

          ?>

          mfg
          Andi

          Kommentar


          • #6
            PHP-Code:
            <?php
            $tag 
            19
            $mon 4
            $jah 1985

            $jetzt mktime(0,0,0,date("m"),date("d"),date("Y")); 
            $gebur mktime(0,0,0,$mon,$tag,$jah); 
            $age   intval(($jetzt $gebur) / (3600 24 365)); 

            echo 
            $age " Jahre alt";
            ?>
            Vielleicht hilft dir das ja als Lösungsansatz.

            Kommentar


            • #7
              ich glaub, du musst aber dann hier mit 365,25 arbeiten, duderino!!

              sonst wärs wieder ungenau...

              mfg
              Andi

              Kommentar


              • #8
                Achja stimmt. Das ist uns glaub schonmal aufgefallen. Hab hier nur so ein paar Standart codes nach denen oft gefragt wird. die kopier ich hier rein

                Sollte das ganze wohl mal überarbeiten

                Kommentar


                • #9
                  Will nicht klugscheissen, aber eure Methode ist nicht 100% sicher, denn die Regel für Schaltjahre lautet nicht nur alle 4 Jahre 1 Tag mehr.
                  Diesem Script ist das egal:
                  $alter = floor((date("Ymd") - date("Ymd", $meinGebTimestamp)) / 10000);

                  Kommentar

                  Lädt...
                  X