Moin!
Ich habe ein Problem, bei dem ich irgendwie nicht weiter komme:
Ich habe ein Feld in einer Tabelle in dem das Geburtsdatum einer Person in der Form "31.01.1990" als char/string abgespeichert ist.
Nun möchte ich alle Personen rausfiltern, die zum Zeitpunkt der aktuellen Abfrage minderjährig sind. Hab schon sehr viel rumprobiert, aber zu keiner passenden Lösung gekommen.
Hier mal ein paar Versuche (von denen ich eigentlich dachte, dass sie klappen müssten)
HAVING Int(Right(geb_dat,4)+18) & Mid(geb_dat,4,2) & Left(geb_dat,2) > Format(Date(),"yyyymmdd");
HAVING DateAdd ('yyyy',18, Cdate(geb_dat) ) > Date();
Jemand n Tipp für mich oder Lust selber zu knobeln? ;-)
Schönen Gruß
Hallo,
Jemand n Tipp für mich oder Lust selber zu knobeln?
ja: Stell den Datentyp des Feldes von Text auf Datum/Uhrzeit um und http://www.donkarl.com/?FAQ2.7
nein.. ::)
Hallo,
du kannst auch einfach den Datums-String in einer Abfrage in ein Datumsfeld konvertieren. (Funktion ZDate bzw. CDate)
Dann damit mit >=DatAdd("yyyy";-18;Datum()) abfragen
Zusammen:
select Vornamen, Nachname, CDate([DeinGeburtsfeld]) AS Geburtsdatum
from DeineTabelle
where CDate([DeinGeburtsfeld])>=DateAdd("yyyy",-18,Date())
Gruß Oma
Hallo,
danke euch beiden für die schnellen Antworten!
Klappt super mit dem Vorschlag von oma.
Den Datentyp kann ich leider nicht umstellen ;-) Ich werte nur aus, hab die Datenquelle also nicht selbst entwickelt, das macht ne Fremdfirma..
Das blöde is jetzt nur, dass manche unserer Angestellten Datumsangaben in der Form 00.04.1970 machen, wenn der genaue Tag nicht bekannt ist. Solche Angaben schmeißt der dann auch als minderjährig mit raus. Muss mal sehen, wie ich das umgeh..
Gruß
Hallo,
Zitatdass manche unserer Angestellten Datumsangaben in der Form 00.04.1970 machen, wenn der genaue Tag nicht bekannt ist
Das finde ich etwas unüberlegt - da sollten sie dann schon besser 01 für den Tag eintragen - damit entspricht dann der Eintrag wenigstens einem Datum!
Du könntest durch eine Aktualisierungsabfrage diese Werte ändern wenn du möchtest.
UPDATE DeineTabelle SET DeinDatumsfeld= "01" & Right([DeinDatumsfeld],8)
WHERE Left([DeinDatumsfeld],2)="00";