Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben
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. ?

Geschrieben

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

Geschrieben

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?

Geschrieben

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 :)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...