Sql Abfrage
SirWayne
- datenbank
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.
also ich möchte wissen ob das datum 01.2007 noch in dem zeitraum 31.02.2006 bis 31.02.2007 ist.
Select * from kunde WHERE ??????
Ich hoffe es war einigermaßen verständlich
Ich hoffe es war einigermaßen verständlich
Nicht ganz, 1. Wie speicherst du die Daten? (Timestamp==Int oder als Date...)
2. Was bedeutet für dich "der Monat ist im Zeitraum"? Soll der gesamte Monat drin sein? Oder ein beliebiger Tag? Oder mindestens die Hälfte oder...
zu 1.Das Datum wird als VARCHAR gespeichert dd.mm.YYYY aber ich kann das format ja umwandeln.
zu 2. also es soll ein monatsabschluß werden und der kunde zahlt monatlich einen beitrag in dem zeitraum und ich möchte alle beiträge hochsummieren in diesem monat +jahr .
ich hoffe das war verständlicher ;)...
Hallo!
zu 1.Das Datum wird als VARCHAR gespeichert dd.mm.YYYY aber ich kann das format ja umwandeln.
Wenn du es als Varchar gespeichert hast, dann kannst du nicht damit rechen. Du musst es in irgendein Datumsformat deines DBMS umwandeln.
mfg
frafu
Wenn du es als Varchar gespeichert hast, dann kannst du nicht damit rechen. Du musst es in irgendein Datumsformat deines DBMS umwandeln.
mfg
frafu
das weiß ich ... mit dem umwandeln habe ich keine probleme !!!!
ich hab mit der logik probleme ...
ich versuch mein problem nochmal darzustellen :)!!!!
abschlusstage ist der 31.01.2007
zeitraum 31.03.2006-31.03.2007
so wie finde ich jetzt heraus, dass der abschlußtag noch im zeitraum ist ????
ich versuch mein problem nochmal darzustellen :)!!!!
abschlusstage ist der 31.01.2007
zeitraum 31.03.2006-31.03.2007so wie finde ich jetzt heraus, dass der abschlußtag noch im zeitraum ist ????
Also gut, wenn du es dann Umgewandelt hast ist es simpel.
SELECT id WHERE (abschlusstag >= von) AND (abschlusstag <= bis) ;
Oder worauf wolltest du hinaus?
Ahoi KraKi,
Also gut, wenn du es dann Umgewandelt hast ist es simpel.
SELECT id WHERE (abschlusstag >= von) AND (abschlusstag <= bis) ;
Dabei wichtig das du umwandelst, am besten in Timestamp. bin mir nicht sicher obs mit YYYY-MM-DD auch funktioniert.
MfG
Dabei wichtig das du umwandelst, am besten in Timestamp. bin mir nicht sicher obs mit YYYY-MM-DD auch funktioniert.
also ich habes es so umgewandelt
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')
Hello,
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')
...als leicht verkürzte Schreibweise würde sich noch
x BETWEEN y AND z
anbieten.
MfG
Rouven
...als leicht verkürzte Schreibweise würde sich noch
x BETWEEN y AND z
anbieten.MfG
Rouven
ok. aber das umwandeln stimmt soweit???weil ich bekomm null zurück , obwohl ich etwas zurück bekommen sollte
Danke alle für die schnellen Antworten ich habs mit eurer Hilfe endlich hinbekommen ;)
Dabei wichtig das du umwandelst, am besten in Timestamp. bin mir nicht sicher obs mit YYYY-MM-DD auch funktioniert.
also ich habes es so umgewandelt
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')
sry ich habe es so umgewandelt
SELECT sum(vr_preis) from kunde
WHERE
DATE_FORMAT(STR_TO_DATE("31.01.2007",'%d.%m.%Y'),'%d.%m.%Y')>=DATE_FORMAT(STR_TO_DATE("31.03.2006",'%d.%m.%Y'),'%d.%m.%Y')
AND
DATE_FORMAT(STR_TO_DATE("31.01.2007",'%d.%m.%Y'),'%d.%m.%Y')<=DATE_FORMAT(STR_TO_DATE("31.03.2007",'%d.%m.%Y'),'%d.%m.%Y')
aber so findet er nicht obwohl mein beispiel ja true ist :( :(