SirWayne: Sql Abfrage

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

  1. 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...

    1. 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 ;)...

      1. 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

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

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

            Also gut, wenn du es dann Umgewandelt hast ist es simpel.

            SELECT id WHERE (abschlusstag >= von) AND (abschlusstag <= bis) ;

            Oder worauf wolltest du hinaus?

            1. 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

              1. 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')

                1. 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

                  --
                  -------------------
                  Death is nature's way of telling you to slow down.
                  1. ...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

                    1. Danke alle für die schnellen Antworten ich habs mit eurer Hilfe endlich hinbekommen ;)

                2. 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 :( :(