Geburtstag ermitteln aus SQL CE

kanada

Mitglied
Hallo,

beise mir derzeit an einer Funktion die Zähne aus und mir fehlt einfach die zündende Idee, vielleicht kann mir die einer von euch geben, das wäre voll toll.

Ich hab eine SQL CE Datenbank mit paar Daten drinnen, auch paar einfache grundlegende Personeninformationen wie den Geburtstag.

Daran würde ich gerne ermitteln bzw. eine Info ausgeben wenn die entsprechende Person z.B. heute seinen Ehrentag hätte. Wenn der Geburtstag dieses Jahr wäre, wäre das auch alles kein Problem, bekanntlich liegt dieser aber meist etwas weiter zurück ;)

SqlCeCommand cm = new SqlCeCommand("SELECT Vorname FROM Mitarbeiter WHERE Geburtstag = '" + DateTime.Now.ToShortDateString() + "'", cn);

aber was muss ich dafür einbauen das in dem Fall nicht nur das Jahr 2015 sondern auch andere beachtet wären, also nur Tag und Monat verglichen werden?

Danke schon mal und noch ein wunderschönes Wochenende
 
Hi,

je nachdem was du für ein DBMS verwendest gibt es verschiedene Formatierungsfunktionen. Auf Oracle z.B. TO_CHAR() um aus einem Datumsfeld einen String in einem bestimmten Format zu machen. Ist dein DB-Feld kein DATE-FIELD, sondern z.B. ein String oder eine Ganzzahl (19890502; soll es ja auch geben...) kannst du aber auch die Daten rauskriegen, da Monat und Tag ja immer an der selben Stelle sind (substring sei hier erwähnt).

Beispiel mit Oracle und "Geburtstag" als DATE-Field:

SELECT ... FROM ... WHERE TO_CHAR(Geburtstag, 'MM-dd') = " + [String mit Monat und Tag im Format MM-dd]

Gruß
Daniel
 
Hi, muss nochmal nachhaken, denn so wirklich weiter komme ich leider nicht :(

Wie gesagt, handelt sich um eine SqlCE Datenbank und der Geburtstag ist in der DB als nvarchar hinterlegt im Format 01.12.2005.

string date;
date = DateTime.Now.ToShortDateString();

SqlCeCommand cm1 = new SqlCeCommand("SELECT Vorname FROM Mitarbeiter WHERE DATEPART(d, Geburtstag) = DATEPART(d, '" + date + "') AND DATEPART(m, Geburtstag) = DATEPART(m, '" + date + "')", cn);

Bekomme ich die Fehlermeldung: "Fehler in einem Teil des Datumsformat"
 
Vorweg, Datum als string zu speichern ist der denkbar ungünstigste fall.
Allein schon da durch das durch ToShortDateString() die Datumsformatierung laut Hinterlegung im Betriebssystem des Anwenders herangezogen wird.
(in DE: TT.MM.JJJJJ in EN: MM/TT/JJJJ (glaub))

In deinem Falle müsstest du wohl am besten mittels substr
http://www.techonthenet.com/sqlite/functions/substr.php
entsprechend tag und monat "ausschneiden" und die ausschnitte dann vergleichen
 
Zurück