sql >> Base de Datos >  >> RDS >> Mysql

Seleccione los registros de los meses actuales mysql de la columna de marca de tiempo

ACTUALIZAR

Una forma mucho mejor indexada de consultar sus datos para un rango de fechas

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: No aplica ninguna función a los datos de su columna, sino que realiza todos los cálculos necesarios en el lado derecho de las condiciones (que son constantes y se evalúan solo una vez después de la ejecución). De esta manera, permite que MySQL se beneficie de los índices que pueda tener en el timestampfield columna.

Respuesta original:

SELECT id, FROM_UNIXTIME(timestampfield) timestamp 
  FROM table1
 WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
   AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())

Nota: Aunque esta consulta produce los resultados correctos, invalida efectivamente el uso adecuado de los índices que podría tener en el timestampfield columna (lo que significa que MySQL se verá obligado a realizar un análisis completo)

Aquí está SQLFiddle demostración