Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie die mysql-Datensätze der aktuellen Monate aus der Zeitstempelspalte aus

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