1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Geburtstag ermitteln aus SQL CE

Dieses Thema im Forum ".NET Datenverwaltung" wurde erstellt von kanada, 31. Oktober 2015.

  1. kanada

    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
     
  2. Improof

    Improof Erfahrenes Mitglied

    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
     
  3. Spyke

    Spyke Capoeirista Premium-User

  4. kanada

    kanada Mitglied

    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"
     
  5. Spyke

    Spyke Capoeirista Premium-User

    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
     
Die Seite wird geladen...