Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Nächsten Geburtstag ausgeben (Datum sortieren)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Nächsten Geburtstag ausgeben (Datum sortieren)

    Hallöchen!

    Ich habe eine Datenbank mit Geburtstag drin. Ich möchte nun den Namen ausgeben, dessen Geburtstag am nächsten ist.

    Ich habe das Datum nicht als Timestamp sondern als DATE in der Zelle gespeichert (YYYY-MM-DD).
    Logisch für mich wäre natürlich SELECT * FROM geb ORDER BY datum. Aber das geht ja schon mal nicht, weil alles nach dem Geburtsjahr geordnet wird...

    Frage: Kann man die SQL-Abfrage so einstellen, dass die ersten 5 Zeichen keine Beachtung finden oder muss man da eine (für mich) komplizierte Vergleichsoperation in PHP herstellen??

    Vielen Dank für Alles!

  • #2
    in mysql, gibt es Year(), Month(), Day() zum auslesen von jahr, monat oder tag eines datums..

    ich denke damit solltest du weiter kommen..

    Kommentar


    • #3
      Hallo!

      Danke für den Hinweis... Aber wie sieht das in der Syntax aus?

      Kommentar


      • #4
        Evtl. ORDER BY DATE_FORMAT(datum,'%e,%c')

        Sonst wie Vorposter.

        Immer wieder nett:
        http://dev.mysql.com/doc/mysql/en/Da...functions.html

        Kommentar


        • #5
          Danke Alibi. Dein Vorschlag funktioniert wunderbar.
          Da ergibt sich durch meine Kurzsichtigkeit aber schon wieder das nächste Problem:
          Es wird alles nach dem Datum geordnet, aber beginnend am Jahresanfang und nicht dem heutigen Tage.
          Kann man das auch ändern?

          Kommentar


          • #6
            nein..
            aber du könntest ja etwas wie..
            where DATE_FORMAT(datum,'%e,%c') >DATE_FORMAT(CURRENT_DATE(),'%e,%c') einfügen..
            musst nur noch abfangen, wenn kein geb-datum nach dem aktuellen datum ist..

            Kommentar


            • #7
              Ein Ansatz:
              Code:
              CREATE TABLE `temp` TYPE=HEAP 
                  SELECT `feld` 
                  FROM `tabelle` 
                  WHERE DATE_FORMAT(`geburtsdatum`, "%m%d") >= DATE_FORMAT(NOW(), "%m%d") 
                  ORDER BY DATE_FORMAT(`geburtsdatum`, "%m%d"); 
              
              INSERT INTO `temp` 
                  SELECT `feld` 
                  FROM `tabelle` 
                  WHERE `geburtsdatum` 
                      AND DATE_FORMAT(`geburtsdatum`, "%m%d") < DATE_FORMAT(NOW(), "%m%d") 
                  ORDER BY DATE_FORMAT(`geburtsdatum`, "%m%d"); 
              
              SELECT * 
              FROM `temp` 
              LIMIT 1; 
              
              DROP TABLE `temp`;

              Kommentar

              Lädt...
              X