AKTUALISIEREN
Eine viel bessere indexfreundliche Methode, um Ihre Daten nach einem Datumsbereich abzufragen
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
AND timestampfield < UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);
Hinweis: Sie wenden keine Funktion auf Ihre Spaltendaten an, sondern führen alle notwendigen Berechnungen auf der rechten Seite der Bedingungen durch (die Konstanten sind und nur einmal nach der Ausführung ausgewertet werden). Auf diese Weise erlauben Sie MySQL, von Indizes zu profitieren, die Sie möglicherweise im timestampfield
haben Spalte.
Ursprüngliche Antwort:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
Hinweis: Obwohl diese Abfrage die korrekten Ergebnisse liefert, macht sie effektiv die ordnungsgemäße Verwendung der Indizes ungültig, die Sie möglicherweise im timestampfield
haben -Spalte (was bedeutet, dass MySQL gezwungen wird, einen vollständigen Scan durchzuführen)
Hier ist SQLFiddle Demo