MySql Abfrage

SirWayne

Erfahrenes Mitglied
Hallo zusammen,

kurze Erklärung ;):
Ich habe einen Kunden der hat einen Vertrag z.B. vertrag von =31.02.2006 bis =31.02.2007
und nun hab ich ein einen ausgewählten monat z.B. januar und das aktuelle Jahr.
Nun bruach ich einen Select welcher schaut ob der Kunde noch im Zeitraum ist,aber irgendwie bekomm ich es nicht so richtig hin.
Ich hoffe es war einigermaßen verständlich ;)
 
Das heißt dass das Datum in der Datenbank in dem Format dd.mm.YYYY gespeichert ist?
Wenn ja, würde ich mir überlegen ob man das Datum entweder als Timestamp oder als DATETIME-Format speichert.
 
ja ist in dem format gespeichert dd.mm.YYYY
aber das format kann ich ja beliebig umwandeln.
aber jetzt weiß ich immer noch nicht wie ich ds problem löse.
mir geht es eigentlich hauptsächlich um die WHERE bedingung
 
nochmal fürs bessere verständnis :)
ich habe eine abshclußtag z.B. 31.01.2007 und ich will wissen ob dieser tag in dem zeitraum 31.03.2006-31.03.2007 liegt
alles ist format varchar mein lösung ist
Code:
SELECT sum(vr_preis) from kunde WHERE
DATE_FORMAT("31.01.2007",'%d.%m.%Y')>=DATE_FORMAT(STR_TO_DATE("31.02.2006",'%d.%m.%Y'),'%d.%m.%Y')
AND DATE_FORMAT("31.01.2007",'%d.%m.%Y')<=DATE_FORMAT(STR_TO_DATE("31.02.2007",'%d.%m.%Y'),'%d.%m.%Y')

klappt aber nicht :( :(
 
Zuletzt bearbeitet:
Hallo,

du hast schon Recht, du kannst die Werte recht beliebig zwischen den verschiedenen Formaten hin- und herkonvertieren.
Wenn du aber Datumsarithmetik betreiben möchtest oder aber echte Datumswerte vergleichen möchtest solltest du die Felder immer in ein DATE oder ähnliches Format konvertieren.

So wie du es in deinem Beispiel versucht hast, würde er einfach nur die Strings vergleichen, und das geht schief und bringt keine Ergebnisse, und wenn ja, die falschen:

Versuch es mal so

SQL:
select SUM(vr_preis) 
  from kunde
 where STR_TO_DATE(abschlusstag,'%d.%m.%Y') between 
           STR_TO_DATE('31.03.2006','%d.%m.%Y')
       AND STR_TO_DATE('31.03.2007','%d.%m.%Y');

Je nachdem wo du deine Datumswerte her bekommst, muss du das noch anpassen.

P.S. Die Lösung setzt voraus, dass dein Datumsfeld (abschlusstag) als char-artiges Feld abgespeichert ist (wenn ich dich richtig verstanden habe).

Hoffe es hilft,
Markus
 
Zuletzt bearbeitet:
Zurück