Veröffentlicht 13. Juli 200817 j Hallo, ich weiss es gibt bessere Methoden diese Problematik zu lösen aber ich habe folgendes gemacht: Ich habe in meiner Datenbank eine Tabelle angelegt wo die Spalten "Tag", "Monat" und "Jahr" enthalten sind. Diese wollte ich jetzt geordnet ausgeben lassen. Sprich, ich möchte von dem heutigen Tag bis zum Ende diesen Jahres alle Einträge ausgeben lassen. Dem entsprechend habe ich meine SQL-Abfrage folgendermaßen gestaltet: SELECT * FROM bgt_action WHERE Tag BETWEEN '" + DateTime.Now.Day + "' AND '31' AND Monat BETWEEN '" + DateTime.Now.Month + "' AND '12' AND Jahr BETWEEN '" + DateTime.Now.Year + "' AND '" + DateTime.Now.Year + "' ORDER BY Jahr, Monat, Tag Ein paar Einträge hat diese Befehl immer ausgegeben und einige nicht obwohl diese auch hätten ausgegeben werden sollen. Ich find den Fehler irgendwie net.
13. Juli 200817 j deine einschränkenden kriterien sind falsch. bedenke insbesonders, dass tage von monaten und monate wiederum von jahren abhängig sind. du suchst ja auch immer heute bis 31., egal welcher monat, d.h. dati von den vorherigen monaten, die nicht im tage-kriterium drin sind, fehlen dir z.b. heute am 13. bekommst du für alle monate immer nur alle ergebniszeilen von 13./14. bis zum 31. hast du das jeweilige datum nicht als DATE-feld? alternativ mach aus T.M.J temporär ein DATE und daraus ein WHERE. s'Amstel
13. Juli 200817 j deine einschränkenden kriterien sind falsch. z.b. heute am 13. bekommst du für alle monate immer nur alle ergebniszeilen von 13./14. bis zum 31. s'Amstel ja das ist doch richtig oder habe ich da einen denkfehler in meiner logik? ich möchte doch nur vom 13. bis zum 31., dann nur vom juli bis dezember und nur alle einträge ausn jahr 2008 ausgeben lassen. neee hab kein datumsfeld. habe das datum in jede einzelne spalte aufgeteilt. ähm, hast du vielleicht ein gutes tutorial wie man mit datumformaten richtig arbetiet u.s.w. ?
13. Juli 200817 j ja, du hast da einen denkfehler. mit deinem SQL bekommst du *immer* nur alle tage, die der 13. bis zum 31. sind, niemals aber den 4. dezember oder den 11. mai. wenn du das selber aufgeteilt hast und es nicht irgendeine nicht behebbare altlast ist: mach das mit den drei einzelnen datumsformaten weg - das ist bäh - und nimm DATE (abhängig von deinem DBMS, das du nicht angegeben hast). s'Amstel
14. Juli 200817 j Ah, jetzt hat's klick gemacht. Stimmt irgendwie! Frage mich gerade wieso ich das nicht vorher gesehen hab :upps Gibt es denn irgendwo ein gutes Tutorial wie man richtig mit Datumsformaten arbeitet?
14. Juli 200817 j Hab mich jetzt noch einmal ein wenig durch das Themengebiet "DateTime" u.s.w. gewühlt und hab's endlich verstanden! Trotzdem vielen Dank! Werde meine Seite jetzt so umgestalten
15. Juli 200817 j Wenn da nicht Clients aus unterschiedlichen Zeitzonen drauf zugreifen sollen dann gibts da eigentlich nicht soviel beim Datum zu beachten.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.