Alter berechnen

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

  • Alter berechnen

    Hallo,

    ich habe mir das berechnen von einem Alter etwas leichter vorgestellt.
    Auf der suche habe ich einige Schnipsel gefunden.
    Sehr viele mit Schaltjahr Problem oder nur in PHP.

    Ich weis hier ehrlich gesagt nicht weiter. Es soll funktionieren, bekomme es aber leider nicht alleine hin.
    Es sieht so aus als würde eine Klammer zu wenig sein -> aber egal wo ich eine dazu mache klappt es nicht.

    Die mySQL Spalte ist ein DATE 'YYYY-MM-DD'

    PHP-Code:
    $sql "SELECT DATE_FORMAT(CURDATE(), '%Y') - DATE_FORMAT(gebdat, '%Y') -1 + IF 
    (DATE_FORMAT(gebdat, '%m%d') >= DATE_FORMAT( CURDATE(), 1, 0 ) 
    AS alter_jahre from lebenslauf where knr = "
    .$_GET['knr']; 
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 0 ) AS alter_jahre from lebenslauf where knr = 1066' at line 1

    Cu Sonic
    MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
    GD 2.0.28

  • #2
    Hallo,

    ich lasse mir das Alter eines Users so ausgeben:

    PHP-Code:
    $abfrage "SELECT TIMESTAMPDIFF(YEAR, geburtstag, CURDATE()) as diff FROM TABELLE"
    Und dann da wo das Alter erscheinen soll:
    PHP-Code:
    echo $diff
    Grüße von Sven

    Kommentar


    • #3
      Das klappt. thx.

      Hatte beim Testen bei mir auch oft den Fehler gemacht und ans ende [as alter] benutzt habe. mir ist erst jetzt aufgefallen das [alter] ja ein SQL befehl ist

      Die Abfrage funktioniert allerdings auch bei einem DATE Feld. Denn TimeStamp geht ja nur bis 1970. bzw. negativ auch weiter.

      YippieYaYeah
      MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
      GD 2.0.28

      Kommentar


      • #4
        Original geschrieben von SonicCGN
        Denn TimeStamp geht ja nur bis 1970. bzw. negativ auch weiter.
        Du verwechselst das mit dem PHP- bzw. System-Timestamp. Derjenige der Datenbank hat ganz ein anderes Format und kennt auch diese Beschränkung nicht.

        TIMESTAMPDIFF() ist sicher die bessere Lösung für MySQL mit Version >= 5.
        Original geschrieben von SonicCGN
        Es soll funktionieren, bekomme es aber leider nicht alleine hin.
        Es sieht so aus als würde eine Klammer zu wenig sein -> aber egal wo ich eine dazu mache klappt es nicht.
        Fehlt nun eine Klammer, oder nicht? Zählen wirst du ja wohl können. Und das ein DATE_FORMAT ohne Format nicht funktioniert ist auch klar. Hier also die Abfrage für ältere MySQL-Versionen:
        Code:
        SELECT 
        	DATE_FORMAT(CURDATE(), '%Y') - 
        	DATE_FORMAT(gebdat, '%Y') -1 + 
        	IF (DATE_FORMAT(gebdat, '%m%d') >= DATE_FORMAT(CURDATE(), '%m%d'), 1, 0 ) 
        		AS alter_jahre 
        FROM lebenslauf 
        WHERE knr = ".$_GET['knr'];
        Gruss
        H2O

        Kommentar

        Lädt...
        X