ATUALIZAÇÃO
Uma maneira muito melhor e amigável ao índice de consultar seus dados para um intervalo de datas
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);
Observação: Você não aplica nenhuma função aos dados da coluna, mas faz todos os cálculos necessários no lado direito das condições (que são constantes e são avaliadas apenas uma vez após a execução). Dessa forma, você permite que o MySQL se beneficie de índices que você possa ter no
timestampfield
coluna. Resposta original:
SELECT id, FROM_UNIXTIME(timestampfield) timestamp
FROM table1
WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())
Observação: Embora essa consulta produza os resultados corretos, ela efetivamente invalida o uso adequado dos índices que você pode ter no
timestampfield
coluna (o que significa que o MySQL será forçado a realizar uma varredura completa) Aqui está SQLFiddle demonstração