Multiplizieren und Subtrahieren in der Abfrage

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

  • Multiplizieren und Subtrahieren in der Abfrage

    Hallo zusammen

    Ich möchte eine Abfrage mit Rechnung machen, aber das geht nicht!!!

    Das ist doch so korrekt?!
    PHP-Code:
    Select ....  (datum <= ('$datum_aktuell' konditionen*86400) ....; 
    So geht es und sobald ich die 30 mit dem Spaltenname ersetzte rechnet es nicht mehr richtig

    PHP-Code:
    Select ....  (datum <= ('$datum_aktuell' 30*86400) ....; 
    Danke für Eurer Feedback
    Zuletzt geändert von sepp; 21.05.2015, 22:47.

  • #2
    Keine Ahnung, was in $datum_aktuell steht.

    Aber eins sei dir gleich mal gesagt: Nicht jeder Tag hat 86.400 Sekunden, somit ist die Berechnung schon mal nicht korrekt.

    Wieso verwendest du nicht die Datum-/Zeitfunktionen, die dir MySQL zur Verfügung stellt?

    Kommentar


    • #3
      Ja ich weiss, jedoch muss es nicht so genau sein...+/- 2 Tage sind io.

      Ich verzweifle an der Abfrage sobald ich die 30 mit dem Spaltennamen ersetzt rechnet es nicht mehr recht!!

      Kommentar


      • #4
        Bitte Tabellenstruktur, Testdaten, gewünschtes Ergebnis und tatsächliches Ergebnis posten. Ansonsten ist das Problem nicht nachvollziehbar.

        Kommentar


        • #5
          Als test habe ich ein Feld namens kondition mit dem Wert 30

          Wenn ich die Abfrage mach
          PHP-Code:
          ...kondition '30'... 
          wird die Abfrage ausgeführt (korrekt)
          Bei
          PHP-Code:
          ...kondition '31'... 
          wird die Abfrage nciht ausgeführt (korrekt)

          Wenn ich nun ein multipikator hinzufüge so..
          PHP-Code:
          kondition '2' '60' 
          Wird die Abfrage nicht ausgeführt (falsch)

          Warum wird die Abfrage mit dem Multiplikator nicht ausgeführ obschon das Resultat stimmt?

          Kommentar


          • #6
            Das sind Code-Bruchstücke und kein testbarer Code.

            Kommentar


            • #7
              Zitat von sepp Beitrag anzeigen
              Das ist doch so korrekt?!
              PHP-Code:
              Select ....  (datum <= ('$datum_aktuell' konditionen*86400) ....; 
              Nein: Unter der Annahme, dass das SQL sein soll. Allerdings kann ich mir auch keine andere Sprache vorstellen, in der das "korrekt" sein dürfte.

              So geht es
              Ganz sicher nicht.

              und sobald ich die 30 mit dem Spaltenname ersetzte rechnet es nicht mehr richtig

              PHP-Code:
              Select ....  (datum <= ('$datum_aktuell' 30*86400) ....; 
              Ich fürchte, "es" "rechnet" überhaupt nicht, sondern wirft mit Fehlermeldungen nach dir, die du uns leider vorenthältst.

              Wahrscheinlich willst du von einem aktuellen Datum 30 Tage zurückrechnen und dies mit einem anderen Datum vergleichen. Von den verwendeten Zahlen ausgehend, vermute ich, dass die Daten als POSIX-Timestamps vorliegen, die in Sekunden ausgedrückt werden. Der Rest bleibt traurigerweise unklar.

              Es stellen sich folgende grundsätzliche Fragen:

              * Wo willst du die Berechnung und den Vergleich durchführen: in SQL oder PHP?

              * In welchem Format hast du die Ausgangswerte vorliegen: Timestamp, DateTime-Objekt, (ISO-8601-)formatierter Datumsstring, datenbankspezifischer DateTime-Datentyp, ...?

              * Welcherart ist die Datums-Differenz, die du berechnen möchtest: Tage, Monate, ... ? Vom Benutzer eingegeben oder fest im Programm verdrahtet?

              Wenn du diese Fragen beantwortest, kann man dir helfen. Vorher hat das wenig Sinn. Du vermischst Zeichenketten mit Zahlen, PHP-Syntax mit SQL-Syntax und Begrifflichkeiten (bspw. kann man "Konditionen" nicht multiplizieren).

              Kannst du die Aufgabenstellung verständlich formulieren, ohne Pseudo-Code-Schnipsel einzustreuen, die weder in PHP noch in SQL rechten Sinn ergeben?
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar

              Lädt...
              X