MISE À JOUR
Un moyen beaucoup plus convivial d'interroger vos données pour une plage de dates
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);
Remarque : Vous n'appliquez aucune fonction aux données de votre colonne, mais effectuez plutôt tous les calculs nécessaires sur le côté droit des conditions (qui sont des constantes et ne sont évaluées qu'une seule fois après l'exécution). De cette façon, vous permettez à MySQL de bénéficier du ou des index que vous pourriez avoir sur le champ timestampfield
colonne.
Réponse originale :
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
Remarque : Bien que cette requête produise les résultats corrects, elle invalide effectivement l'utilisation correcte du ou des index que vous pourriez avoir sur le timestampfield
colonne (ce qui signifie que MySQL sera obligé d'effectuer une analyse complète)
Voici SQLFiddle démo