Rubrik: Datenbanken · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 21.02.03 |
SQL-Datumabfrage, die Zweite Ein leidiges Thema für viele ;-)) Wie kann ich eine Geburtstags-Abfrage in eine SQL-Anweisung einbinden? | ||
Autor: Dieter Otter | Bewertung: | Views: 21.460 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Vor einiger Zeit haben wir Ihnen gezeigt, wie eine SQL-Anweisung zur Datumsabfrage in einer Access-Datenbank aufgebaut sein muss.
Hier nochmals kurz zur Erinnerung:
- Verwenden der amerikanischen Schreibweise, also m-d-yy
- Datum zwischen zwei Doppelkreuze setzen: #m-d-yy#
Jetzt kommt es aber nicht selten vor, da will man eine Geburtstagsliste erstellen. In diesem Fall darf also die Jahreszahl nicht berücksichtigt werden. Mit obiger Regel kommt da jetzt nicht weit
Ohne SQL - also z.B. direkt als VB-Abfrage - könnte man die Abfrage wie folgt "formulieren":
' Liegt das Datum im Bereich 01.02. bis 15.02. ? Dim sDatum As Date sDatum = Now If Format$(sDatum, "mmdd") >= "0201" And _ Format$(sDatum, "mmdd") <= "0215" Then
Und genau so - oder zumindest sehr ähnlich - kann man auch eine SQL-Abfrage formulieren:
SQL = "SELECT * FROM Tabelle WHERE _ Format(Datumfeld, ""mmdd"") BETWEEN '0201' AND '0215'"
Übersetzt bedeutet das: Suche alle Datensätze mit Datum (dd.mm) zwischen 01.02 und 15.02
Mit variablen Platzhaltern sieht das dann so aus:
Dim SQL As String Dim sVon As String Dim sBis As String ' Zeitraum txtVon.Text = "01.02" txtBis.Text = "15.02" ' Alle Geburtstage eines bestimmten Zeitraums ermitteln sVon = Right$(txtVon.Text, 2) & Left$(txtVon.Text, 2) sBis = Right$(txtBis.Text, 2) & Left$(txtBis.Text, 2) ' SQL-Anweisung SQL = "SELECT * FROM Tabelle WHERE " & _ "Format(Datum, ""mmdd"") BETWEEN " & _ "'" & sVon & "' AND '" & sBis & "'"
Preisfrage:
Wie lautet der SQL-Abfragestring, wenn man alle Personen ermitteln möchte, die in einem bestimmten Monat Geburstag haben?
Dim nMonat As Integer nMonat = 2 ' Februar SQL = "SELECT * FROM Tabellle WHERE " & _ "Format$(Datum, ""mm"") = '" & Format$(nMonat, "00") & "'"