Quote (xPoizar @ 2 May 2023 15:35)
So zur meiner ersten Frage:
Ich habe eine Tabelle in der in eine Spalte "Geburtsdatum" die Daten von Personen im Format "YYYY-MM-DD" auflistet
Jetzt soll ich alle Personen anzeigen lassen die zwischen dem heutigen Datum und den nächsten 7 Tagen Geburtstag haben.
Mein Denkansatz bisher ist mit einer Between funktion und Current_date AND dateadd(currentdate, interval 7 days) zu arbeiten
SELECT * FROM `mitglied`
WHERE geburtstag BETWEEN CURRENT_DATE AND
DATEADD(CURRENT_DATE, INTERVAL 7 DAYS);
soweit bin ich schon. Leider Syntax Fehler weil er Dateadd nicht verarbeiten kann und selbst wenn es funktioniert, würde es an den Jahreszahlen scheitern.
Diese sind zwar in der Tabelle aber sollen bei der Abfrage nicht berücksichtig werden.
Jemand ne Idee?
Welche Datenbank benutzt du denn?
Falls Oracle kannst du BETWEEN SYSDATE AND SYSDATE+7 verwenden.
Wichtig bei between ist, dass der "kleinere" (frühere) Wert vor dem AND kommt
/e: außerdem sollte man berücksichtigen dass Datumswerte immer alle Informationen beinhalten (Tag, Monat, Jahr, Stunden, Minuten, Sekunden)
D.h. man muss das ganze evtl ohne die Uhrzeit betrachten (bzw. bei Geburtstagen sogar auch ohne das Jahr)
Würde vmtl. "heute" und "heute in 7 Tagen" jeweils als strings konvertieren und ins Format MMDD bringen.
Bei Oracle:
TO_CHAR(geburtstag, 'MMDD') BETWEEN TO_CHAR(SYSDATE, 'MMDD') AND TO_CHAR(SYSDATE+7, 'MMDD')
Falls andere DB dann schauen, welche Funktion dort Date in Varchar konvertiert.
Das alles unter der Annahme, dass "geburtstag" im Datentyp Date gespeichert ist.
This post was edited by blah2k6 on May 2 2023 08:47am