AGGIORNAMENTO
Un modo molto più intuitivo per eseguire query sui dati per un intervallo di date
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);
Nota: Non si applica alcuna funzione ai dati della colonna, ma si eseguono tutti i calcoli necessari sul lato destro delle condizioni (che sono costanti e vengono valutate solo una volta dopo l'esecuzione). In questo modo consenti a MySQL di beneficiare degli indici che potresti avere nel timestampfield
colonna.
Risposta originale:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
Nota: Sebbene questa query produca i risultati corretti, invalida di fatto il corretto utilizzo degli indici che potresti avere nel timestampfield
colonna (che significa che MySQL sarà costretto a eseguire una scansione completa)
Ecco SQLFiddle demo