Klaus Mock: Geburstagsabfrage Microsoft SQL Server + ASP

Beitrag lesen

Hallo,

meine SQL Abfrage lautet so:

"SELECT * FROM dbo.z_ma_db where (DatePart("m",(geburtsdatum)) = DatePart("m", Date()) and DatePart("d",(geburtsdatum)) = DatePart("d", Date()))ORDER BY nachname, vorname ASC"

schön wäre, wenn du hierfür einen Tipp hättest !

Bei Tests mit SQL-Statements hat sich in der Praxis ein passender SQL-Editor schon oft als äußerst hilfreich erwiesen. Bei den diversen SQL-Servern gibt es im Enterprise-Manager immer so ein Tool, auch ISQL wird AFAIK schon seit längerer Zeit mit ausgeliefert. Diese Werkzeuge haben oft den Vorteil, daß sie neben der Fehlernummer auch noch Klartext meldungen ausspucken.
MIt dieser Fehlermeldung und einem gründlichen Studium der entsprechenden Komponenten im mit gelieferten Handbuch kann man dann meist den Fehler ratzfatz beheben.

Du hast im obigen Statement mind. 2 Fehler eingebaut.
Erstens gibt's die Funktion DATE() beim MS_SQL-Server nicht, sondern nur GETDATE().
Zweitens ist die Syntax von DATEPART() anders als von Dir angewendet.
Schreibe

SELECT * FROM tabelle
   WHERE DATEPART(month,geburtsdatum) = DATEPART(month,GETDATE())

und es sollte funktionieren. (abgesehen, daß Du besser das * durch die Liste der wirklich benötigten Felder ersetzen solltest)

Grüße
  Klaus

PS.: die obige Syntax funktioniert sicher Version 6.5,7 und 2000. In der aktuellen Version gibt es auch die Funktionen MONTH(), DAY() usw. Bei der 7er-Version bin ihc mir nicht sicher, ob die das auch schon kann.