Rainer: Mit MYSQL "gestern auswählen"

Hallo,

versucher verzweifelt mit MYSQL den Tag vor heute auszuwählen, also gestern - habs mal so probiert, aber es klappt nicht:

SELECT
    date_time,
    DAYOFMONTH(date_time) as tag,
    MONTH(date_time) as monat,
    YEAR(date_time) as jahr,
    HOUR(date_time) as stunde,
    count(site_name) as anzahl,
    DAYOFMONTH(DATE_ADD(date_time,INTERVAL -1 DAY)) as gestern
FROM
    tmp
WHERE
    tag = gestern
GROUP BY
    stunde
ORDER BY
    date_time DESC

Wer kann mir helfen?

Vielen Dank,
Rainer

  1. Halihallo Rainer

    versucher verzweifelt mit MYSQL den Tag vor heute auszuwählen, also gestern - habs mal so probiert, aber es klappt nicht:

    mysql> SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
    +---------------------------------+

    DATE_SUB(NOW(), INTERVAL 1 DAY) |

    +---------------------------------+

    2003-11-17 16:54:23             |

    +---------------------------------+
    1 row in set (0.00 sec)

    WHERE
        tag = gestern

    Du vergleichst ja nur den Tag, nicht das Datum.

    Viele Grüsse

    Philipp

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Hi Philipp,

      hab's so gemacht:

      SELECT
          date_time,
          DAYOFMONTH(date_time) as tag,
          MONTH(date_time) as monat,
          YEAR(date_time) as jahr,
          HOUR(date_time) as stunde,
          count(site_name) as anzahl,
          DATE_SUB(NOW(), INTERVAL 1 DAY) as gestern
      FROM
          tmp
      WHERE
          tag = gestern
      GROUP BY
          stunde
      ORDER BY
          date_time DESC

      Leider klappts nicht ...

      Rainer

      1. Halihallo Rainer

        Leider klappts nicht ...

        Will heissen?

        Viele Grüsse

        Philipp

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. Hi Philipp,

          es erscheint nichts ... :-((((
          Rechnet MYSQL genau einen Tag und die Sekunden und Stunden zurück?
          Angezeigt werden soll der ganzen gestrige Tag.

          Rainer

          1. Halihallo Rainer

            Rechnet MYSQL genau einen Tag und die Sekunden und Stunden zurück?

            Dem ist so.

            Angezeigt werden soll der ganzen gestrige Tag.

            Nun, die einfachste Möglichkeit bestünde in MySQL >4.1 mit der DATE() - Funktion. Bei
            MySQL<4.0 verwende der Einfachkeits halber TO_DAYS(), welches dir die Tage seit 1.1.1970
            gibt.  Also etwa TO_DAYS(date_col)=TO_DAYS(DATE_SUB(...))

            Viele Grüsse

            Philipp

            --
            RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
            Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
          2. hi

            es erscheint nichts ... :-((((

            wie den auch, deine where bedingung schließt alles aus. überlege doch mal, der tag heute und gestern wird nie gleich sein. lass doch mal alles weg und für den ersten Select aus, den er dir gesagt hat.

            SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);

            Ilja

  2. Moin!

    versucher verzweifelt mit MYSQL den Tag vor heute auszuwählen, also gestern - habs mal so probiert, aber es klappt nicht:

    Grobe Schablone für sowas:

    SELECT spalten FROM table WHERE datumspalte = "heute minus 1 Tag";

    Mit anderen Worten: Es bringt dir nichts, im SELECT irgendein Datum auszurechnen, das mußt du im WHERE tun!

    Faustregel: Das, was SELECT ausrechnet, steht dir im WHERE noch nicht zur Verfügung. Denn erst muß die Datenbank wissen, ob der Datensatz zum Ergebnis gehört, bevor er ausgelesen und für SELECT aufbereitet wird (die Aufbereitung kann durchaus performancekritisch sein, deshalb erst hinterher).

    Da du alle relevanten Datumsfunktionen schon gefunden hast, sollte die Rechnerei eigentlich kein großes Problem mehr sein.

    Vergleiche das Datum (ohne Uhrzeit) der Datumsspalte mit dem Datum (ohne Zeit) von NOW() minus 1 Tag.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)