MYSQL Abfrage von bestimmten Datum
Molly
- datenbank
Ich habe ein date und ein ip Feld. Ich möchte nun alle IP Nummern eines bestimmten Tages ermitteln. Eine Liste aller IPs ohen Tag, ermittle ich so:
SELECT ip from table group by ip
wenn ich sie abe rnun vom 10.01.2014 haben möchte, verstehe ich die Seite
http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html
nicht ganz. Bzw. finde nicht den richtigen Befehl.
Versuch, der leide rnicht zum Erfolg führte...
SELECT ip from table WHERE date <= date('2014-01-10', 'YYYY-MM-DD') group by ip
Nachtrag:
date > '2014-01-10 00:00:0' AND date < '2014-01-10 23:59:59'
so würde es theoretisch gehen, doch ist bestimmt nicht die exakte Lösung?
Tach!
date > '2014-01-10 00:00:0' AND date < '2014-01-10 23:59:59'
so würde es theoretisch gehen, doch ist bestimmt nicht die exakte Lösung?
date
BETWEEN '2014-01-10 00:00:00' AND '2014-01-10 23:59:59'
wäre eine Alternative.
dedlfix.
SELECT ip from table group by ip
Ich bin mir nicht sicher, ob hier nicht DISTINCT besser wär:
SELECT DISTINCT
`table`.`ip`
FROM
`table`;
wenn ich sie abe rnun vom 10.01.2014 haben möchte, verstehe ich die Seite
http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html
nicht ganz. Bzw. finde nicht den richtigen Befehl.
Es gibt Unterschiede zwischen Date und DateTime ;)
(Deswegen find ich auch den Namen des Feldes schlecht gewählt)
SELECT DISTINCT
`table`.`ip`
FROM
`table`
WHERE
DATE(`table`.`date`) == '2013-08-30';
(Ich hab jetzt DISTINCT genommen, schreibt sich kürzer)
DATE(
field)
ist ein type cast, welches/welcher das Feld field auf sein Datum (Jahr+Monat+Tag) reduziert.
MfG
bubble
Tach!
WHERE
DATE(table
.date
) == '2013-08-30';
DATE(
field)
ist ein type cast, welches/welcher das Feld field auf sein Datum (Jahr+Monat+Tag) reduziert.
Ein Typecast ist DATE() nicht, sondern eine Funktion. Sie tut zwar das gewünschte, aber das kann sich negativ auf die Geschwindigkeit auswirken. Wenn MySQL keine Optimierung vornimmt, wird diese Funktion auf jeden Datensatz angewendet, ohne dass ein Index zum Einsatz kommen kann (sofern einer auf date vorhanden ist). Bei wenigen Datensätzen fällt das jedoch nicht ins Gewicht. Zur Verbesserung der Geschwindigkeit wäre es günstig, statt der Funktion den BETWEEN-Operator zu nehmen. Der operiert dann mit einer vollständigen Zeitangabe, also auch mit dem gesamten Feldinhalt, und damit ist dann wieder ein Index verwendbar.
dedlfix.