Geburtstags Abfrage

jcordes

Grünschnabel
Hallo,

folgende Problematik:

Ich möchte auf unserer Intranetseite anzeigen lassen wer heute Geburtstag hat, wer die letzten 3 waren die Geburtstag hatten und die nächsten 3 die Geburtstag haben.


Das mit dem anzeigen lassen wer heute Geburtstag hat ist nicht das Problem, ich bekomm es einfach nur nicht hin die letzten und nächsten 3 anzeigen zu lassen. Alternativ würde auch gehen das alle die angezeigt werden die in den letzten 6 Tagen Geburtstag hatten.

Ich hänge hier ziemlich bei der Abfrage fest. Ich kann ja mal einen Zwischenstand zeigen:

Code:
SELECT * FROM OMUSER WHERE NOT(DTBIRTH = ' ') AND DATEPART(day, DTBIRTH) BETWEEN DATEPART(day,DATEADD(dd,-6,getDate())) AND DATEPART(day,DATEADD(dd,6,getDate())) ORDER BY DTBIRTH ASC

Naja so richtig war das nichts. (DTBirth enthält das Datum in diesem Format: 09.08.1974)




Ich benutzte MSSQL 2005 Express über VBScript.



Bin für jede Antwort dankbar.



Mit freundlichen Grüßen

jcordes
 
Zuletzt bearbeitet:
Hallo,

es gibt so einige Möglichkeiten, je nachdem wieviel du direkt über SQL machen möchtest:

Ich denke eine Lösung für das Finden der nächsten 3 Geburtstage per SQL könnte so aussehen:

SQL:
select TOP 3 
       dtbirth,
       name
  from omuser 
 where (DATEPART(m,dtbirth) = DATEPART(m,getDate()) and 
        DATEPART(d,dtbirth) > DATEPART(d,getDate())) or
        DATEPART(m,dtbirth) > CASE DATEPART(m,getDate()) WHEN 12 THEN 0 ELSE DATEPART(m,getDate()) END
 order 
    by DATEPART(m,dtbirth), 
       DATEPART(d,dtbirth)

Edit: Falls dir das aktuelle Jahr reicht (also nicht übergreifend) und Dich eine kleine Ungenauigkeit nicht weiter stört, dann kannst du auch folgendes versuchen:

SQL:
select TOP 3 dtbirth 
  from omuser 
 where DATEPART(dy,dtbirth) > DATEPART(dy,getDate()) 
 order
    by DATEPART(dy,dtbirth)

Gibt sicher noch andere Möglichkeiten, z.B. mit Rownums. Poste evtl. später nochmal was dazu.

Hoffe es hilft,
Markus
 
Zuletzt bearbeitet:
Zurück