Mit MYSQL "gestern auswählen"
Rainer
- datenbank
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
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
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
Halihallo Rainer
Leider klappts nicht ...
Will heissen?
Viele Grüsse
Philipp
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
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
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
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