Geburstagsabfrage Microsoft SQL Server + ASP
P.Kugler
- datenbank
0 Klaus Mock0 P.Kugler0 Klaus Mock0 Frank
Hallo,
möchte aus einer Spalte "geburtstagsdatum" in welcher die Geburtstage unserer Mitglieder gespeichert sind auf einer Seite Anzeigen, wer von unseren Mitgliedern am heutigen Tag Geburtstag hat. Die Daten sind z.B. 05.08.1967 und 05.08.1970 wie kann man nun, wenn Heute der 05.08.2002 ist eine SQl Abfrage definieren bei der die Einträge 05.08.1967 und 05.08.1970 gefunden werden.
Für Hilfe wäre ich dankbar !!
Gruß
Peter
Hallo,
möchte aus einer Spalte "geburtstagsdatum" in welcher die Geburtstage unserer Mitglieder gespeichert sind auf einer Seite Anzeigen, wer von unseren Mitgliedern am heutigen Tag Geburtstag hat. Die Daten sind z.B. 05.08.1967 und 05.08.1970 wie kann man nun, wenn Heute der 05.08.2002 ist eine SQl Abfrage definieren bei der die Einträge 05.08.1967 und 05.08.1970 gefunden werden.
Was haben wohl 5.8.1967 und 5.8.1970 gemeinsam, um als Geburtstag interessant zu sein? Richtig den Tag und den Monat.
Du mußt also eine Abfrage formulieren, in der Du den Tag und das Monat des gespeicherten Geburtstags mit einem anderen Datum, z.B. dem aktuellen, vergleichst. Erst wenn bei beiden Werten, also Tag und Monat, eine Übereinstimmung gefunden wird, dann muß der Datensatz in der Abfrage berücksichtig, sprich ausgegeben werden.
Beim MS-SQL-Server benötigst Du dafür die Komponenten: SELECT-Abfrage mit WHERE-Klauseln, die AND verknüpft sind, und die Funktion DATEPART() bzw. GETDATE(), wenn Du den heutigen Tag ermitteln willst.
Grüße
Klaus
Danke Klaus,
die Spalte mit den Geburtstagen lautet "geburtsdatum",
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"
leider bringt er folgende Fehlermeldung:
Kompilierungsfehler in Microsoft VBScript error '800a0401'
Anweisungsende erwartet
/csi_mdb/s5_geburtstag/geb_unten_1.asp, line 27
Recordset1.Source = "SELECT * FROM dbo.z_ma_db where [DatePart("m"
----------------------------------------------------------------^
schön wäre, wenn du hierfür einen Tipp hättest !
Gruß
Peter
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.
Kompilierungsfehler in Microsoft VBScript error '800a0401'
Anweisungsende erwartet
/csi_mdb/s5_geburtstag/geb_unten_1.asp, line 27
Recordset1.Source = "SELECT * FROM dbo.z_ma_db where [DatePart("m"
Moin,
die logischen Fehler liegen so, wie Klaus es auch sieht, jedoch hast du einfach hier die " falsch benutzt. Weniger in Zusammenhang mit dem SQL-Server selbst sondern, VBScript stellt fest, das die Zeichenkette mal aufhört, dann wieder anfängt ohne die Syntax einzuhalten.
Diesen Fehler würdest du weiterhin bekommen, wenn du NUR Klaus Tips bzgl. getDate() etc befolgst.
Gruß, Frank