Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecione os registros dos meses atuais mysql da coluna timestamp


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