date between

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • date between

    Hallo zusammen

    Bin bereits den ganzen Tag im I-Net am schauen wegen folgendem Problem:

    In einer Kundendatenbank (mySQL) wird das Datum der nächsten Verrechnung gespeichert. (Date-Field, yyyy-mm-dd)

    Wie kann ich folgende Abfrage machen:
    Zeige Datensätze welche (heute + 30 tage) - 100 Tage zur Verrechnung anstehen.

    Nun, das klingt nicht allzu schwer... aber irgendwie finde ich keine Lösung.

    Folgendes habe ich schon mal:
    PHP-Code:
    SELECT FROM customers WHERE TO_DAYS($date3) - TO_DAYS(rechper) <= 100 order by 'id' 
    Hinter "$date3" steht:

    PHP-Code:
            $jahr date("Y");
            
            
    $monat date("m");
            
            
    $tag date("j");
             
            
    $thisday mktime (0,0,0,$monat,$tag+30,$jahr); 
    Doch dann gibt es auch die Datensätze aus, welche in der Zukunft liegen.

    Datensätze können in der Zukunft liegen weil:
    Logischerweise auch erst in einem Jahr wieder eine Rechnung fällig werden kann.

    Gibt es da wirklich keine Lösung?

    Besten Dank für die Hilfe schon im voraus
    Grüsse
    binaer

  • #2
    wenn ich dich richtig verstehe, willst du die datensätze der kommenden
    30 tage und die datensätze die 70 zurückliegen ausgeben lassen !?

    dann versuch doch mal in deine datenbanktabelle nen TIMESTAMP
    einzubauen. schon haste deine datensätze sortiert und brauchst nur die
    100 ersten auslesen. fertig.


    Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

    Kommentar


    • #3
      am liebsten wäre mir halt eben schon die variante per "date"-field.

      Kommentar


      • #4
        hmm,

        das läßt sich alles in die query packen, sql kann afaik das aktuelle datum angeben (NOW()) , und dann
        Code:
        WHERE deine_data BETWEEN NOW - INTERVAL 30days AND NOW +INTERVAL 70days
        oder andersrum

        das ist nur pseudocode, such dir entsprechende syntax. zumindest würde ich vermuten, daß es so lösbar ist ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          warum einfach, wenns kompliziert geht...

          Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

          Kommentar


          • #6
            Hi together

            Danke für Eure Hilfe erstmal.

            Nun...

            PHP-Code:
            $result mysql_query("SELECT * FROM customers WHERE rechper BETWEEN NOW() +INTERVAL 30days AND NOW() -INTERVAL 70days"
            gibt

            You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
            Any Ideas?

            Grüsse
            binaer

            Kommentar


            • #7
              das ist nur pseudocode, such dir entsprechende syntax.
              ich denke mal, das MYSQL das so nicht erkennt.


              NOW() gibt ein bestimmtes
              format aus, das ungefäht so aussieht - JJJMMTTHHMMSS
              PHP-Code:
              NOW() gibt also etwa folgendes aus2004-02-24 14:58:33 
              du mußt also alles auch entsprechend anpassen
              Zuletzt geändert von hydrococcus; 24.02.2004, 15:01.

              Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

              Kommentar


              • #8
                @hydrococcus
                Danke für Deine Antwort.

                Betr. now() hast Du recht.

                Es geht mir nicht darum, die JETZIGE Uhrzeit (natürlich zusammen mit dem Datum) abzufragen. Für Rechnungen reicht das Datum völlig aus.

                Deswegen habe ich nun mal folgende Abfrage formuliert:
                PHP-Code:
                $result mysql_query("SELECT * FROM customers WHERE rechper BETWEEN $date +INTERVAL 30days AND $date -INTERVAL 70days"
                Nur leider funktioniert auch dies nicht
                date3 sieht wie folgt aus:

                PHP-Code:
                $thisday mktime (0,0,0,$monat,$tag+30,$jahr);
                $date3 strftime ("%Y-%m-%d"$thisday); 
                Weitere Ideen?

                Besten Dank!
                binaer

                Kommentar


                • #9
                  kommt den immer noch
                  You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
                  ?

                  Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

                  Kommentar


                  • #10
                    jep

                    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

                    Kommentar


                    • #11
                      und du hast dir das statement natürlich auch mal ausgeben lassen und geschaut, ob es richtig aussieht?

                      zurnot einfach mal hier posten
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        so wie du die syntax da schreibst, glaube ich das es nicht
                        funktionieren kann.
                        derHund schreibt doch schon
                        das ist nur pseudocode, such dir entsprechende syntax.
                        schau dir mal INTERVAL() genau an
                        PHP-Code:
                        INTERVAL(a,b,c,d,...) gibt 0 aus
                        INTERVAL
                        (b,a,c,d,...) gibt 1 aus 
                        also einfach INTERVAL hinschreiben bring meines erachtens nichts.

                        Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

                        Kommentar


                        • #13
                          PHP-Code:
                          $result mysql_query("SELECT * FROM customers WHERE rechper BETWEEN $date3 +INTERVAL 30days AND $date3 -INTERVAL 70days") or die (mysql_error()); 
                          führt zu

                          SELECT * FROM customers WHERE rechper BETWEEN '2004-03-25' +INTERVAL 30days AND '2004-03-25' -INTERVAL 70days
                          und gibt fehler:

                          You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

                          Kommentar


                          • #14
                            abgesehen davon, dass du die grenzen deines suchintervalls tauschen solltest, solltest du endlich mal nachschauen wie die korrekte syntax aussieht...

                            http://www.mysql.com/doc/de/Date_and...functions.html und da nach INTERVAL suchen
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              sorry
                              Zuletzt geändert von hydrococcus; 24.02.2004, 16:23.

                              Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

                              Kommentar

                              Lädt...
                              X