Spalte in einem vorgegebenen Zeitraum summieren....

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

  • Titus
    antwortet
    Original geschrieben von Sky
    CHAR und VARCHAR dürften für mySQL nicht skalar sein, in C werden sie ja wie Arrays abgelegt...
    skalar = eindimensional = es gibt größer und kleiner => es kann mit BETWEEN verglichen werden. Das ist das hüpfende Komma.
    Ein String mit fester (Maximal-)Länge - also char/varchar in SQL bzw. char[] in C - ist skalar oder kann zumindest so definiert werden.

    Einen Kommentar schreiben:


  • goth
    antwortet
    Original geschrieben von Ralf
    Hallo,

    zu diesem Thema habe ich eine ähnliche Frage:
    ich möchte aus einer Tabelle alle Datensätze, die in den letzten 7 Tagen (oder mehr) eingetragen wurden und diese dann ausgeben. Mein Datumsfeld ist vom Typ date der Form 2002-05-25. Die Abfrage müßte doch auch so in der Form sein wie:

    select * from $tabelle where Datumsfeld between NOW() - 7 Tage.

    Gruß Ralf
    oder:

    SELECT * FROM $tabelle where Datumsfeld >=NOW()-INTERVAL 7 DAY

    Einen Kommentar schreiben:


  • Ralf
    antwortet
    Hallo,

    zu diesem Thema habe ich eine ähnliche Frage:
    ich möchte aus einer Tabelle alle Datensätze, die in den letzten 7 Tagen (oder mehr) eingetragen wurden und diese dann ausgeben. Mein Datumsfeld ist vom Typ date der Form 2002-05-25. Die Abfrage müßte doch auch so in der Form sein wie:

    select * from $tabelle where Datumsfeld between NOW() - 7 Tage.

    Gruß Ralf

    Einen Kommentar schreiben:


  • antwortet
    CHAR und VARCHAR dürften für mySQL nicht skalar sein, in C werden sie ja wie Arrays abgelegt...

    Einen Kommentar schreiben:


  • antwortet
    genua. und CHAR ist ein String mit fester Länge, der wird von mySQL mit Leerzeichen aufgefüllt.

    Einen Kommentar schreiben:


  • antwortet
    VARCHAR funtzt auch mit BETWEEN => hab's ausprobiert.

    is VARCHAR eigentlich sowas wie der datentyp string??

    Einen Kommentar schreiben:


  • antwortet
    bei TEXT und BLOB wäre das wohl auch bißchen heftig was die Rechenzeit angeht. Kann ich mir nicht vorstellen.

    Einen Kommentar schreiben:


  • antwortet
    Nachtrag

    BETWEEN funktioniert mit allen skalaren (also abzählbaren) Typen, also mit sämtlichen Integer-, Datums- und Zeit-Feldern.

    CHAR und VARCHAR hab ich noch nicht probiert, halte ich aber für denkbar.

    Mit TEXT- und BLOB-Feldern funktioniert es vermutlich nicht.

    Einen Kommentar schreiben:


  • antwortet
    das mit dem between.

    Einen Kommentar schreiben:


  • antwortet
    was hast du so gemacht, wie ich es meinte?

    Das mit dem Timestamp oder das Between vielleicht auch bei Date oder Datetime funktioniert??

    Du solltest für nachfolgende Leser dieses Beitrags auch die Lösung bißchen preisgeben und da meine letzte Antwort nicht eindeutig eine Lösung enthält, weiß man's ja nicht genau...

    Danke und Ciao

    Einen Kommentar schreiben:


  • antwortet
    hab's so gemacht wie du meintest.

    hat geklappt.

    DANKE

    Einen Kommentar schreiben:


  • antwortet
    ja, den Befehl meinte ich so, allerdings weiß ich nicht, ob der bei einem Datum-Feld so funktioniert. Es würde eben klappen, wenn du das Datum als Timestamp abspeichern würdest, d.h. BETWEEN vergleich Zahlenwerte. Wenn dein Datum vom Typ "Datetime" oder "Date" ist, kannst du es ja mal probieren. Ansonsten gibt es zwar jede Menge Datumsfunktionen unter MySQL, aber soweit ich weiß keine, die einen Zeitraum prüft.
    Vielleicht klappts ja aber auch da mit dem BETWEEN...

    P.S.: Ich finde das Format TIMESTAMP immer besser, da man wunderbar damit Rechnen, Sortieren und was weiß ich noch alles machen kann. Und in ein "richtiges" Datum umwandeln ist ja auch nicht schwer.

    Einen Kommentar schreiben:


  • antwortet
    in das Feld DATEhr schreibe ich über php in folgendem Format rein: 2002-01-07

    das müßte doch passen.

    meinst du den befehl so:
    mysql_query("("SELECT SUM(AMOUNThr) AS summe FROM tabelle WHERE DATEhr BETWEEN $datum_von AND $datum_bis");

    Einen Kommentar schreiben:


  • antwortet
    du kannst in deinem SQL-Query in der where-Bedingung die Syntax between benutzen. Äh, unter der Voraussetzung, daß du auch Timestamps abspeicherst. Oder welches Format hast du da?

    Wie dem auch sei, wenn du es richtig gemacht hast, dann kannst du jetzt eben auch ganz einfach

    mysql_query("("SELECT SUM(AMOUNThr) AS summe FROM tabelle where datumsfeld BETWEEN $datum_von AND $datum_bis");

    P.S.: Ich verschiebe das Thema mal ins Forum "SQL", paßt doch dort besser...

    Einen Kommentar schreiben:


  • Metallica
    hat ein Thema erstellt Spalte in einem vorgegebenen Zeitraum summieren.....

    Spalte in einem vorgegebenen Zeitraum summieren....

    Hi Leute!

    In meiner sql_db hab ich ein Feld AMOUNThr und ein Feld DATEhr.
    Wenn eine Einzahlung stattgefunden hat, wird ein neuer DS erzeugt wo Betrag und aktuelles Datum gespeichert werden.

    In Flash hab ich ein kleines Formular gemacht wo der User einen Zeitraum bestimmen kann, um den Gesamtbetrag an Einzahlungen zu erfahren.
    Es gibt da zwei Felder (Datum von & Datum bis).
    Diese beiden Variablen sende ich an php.
    zB
    $datum_beginn = "2002-01-01";
    $datum_end = "2002-01-08";

    In der sql_db soll dann nur die Gesamtsumme der Einzahlungen vom 01.01 bis 01.08 zusammenaddiert werden.

    Die Gesamtsumme von dem Feld AMOUNThr hab ich ja schon. Aber wie kann ich ihm sagen, dass er nur von - bis addieren soll??
    $ac = mysql_query("SELECT SUM(AMOUNThr) AS summe FROM tabelle");
    $ac2 = mysql_fetch_array($ac);
    $ac3 = $ac2[summe];


    Bitte um Rat

    [Editiert von Metallica am 07-01-2002 um 08:21]
Lädt...
X