Cuente las filas en la database mysql donde la timestamp dentro del intervalo X

Estoy tratando de contar las filas en una tabla en mi database que se inserton dentro de X horas o X días. Lo he intentado repetidamente, pero sigo obteniendo respuestas de sets vacíos.

La columna start_stamp en mi tabla tiene el siguiente formatting: 2013-08-07 18:18:37

He intentado muchas variaciones en: select * from mytable donde start_stamp = now () interval -1 day;

Pero todo fue en vano. ¿Puede alguien decirme qué estoy haciendo mal?

En lugar de seleccionar filas donde start_stamp es igual a now() - 1day , necesita filas donde sea mayor o igual que ese range. Además, tu syntax está un poco desajustada. La aritmética de la date de MySQL utiliza column_value - INTERVAL <number> <period> , por lo que necesita:

 SELECT COUNT(*) AS num_new_rows FROM mytable WHERE start_stamp >= NOW() - INTERVAL 1 DAY 

Del mismo modo, para hace n horas, use INTERVAL n HOUR

 # Within 3 hours... WHERE start_stamp >= NOW() - INTERVAL 3 HOUR 

La syntax para la aritmética del intervalo de dates se describe en un pequeño párrafo debajo de la reference de la function DATE_ADD() en la documentation oficial de MySQL.

Aquí hay algunos ejemplos …

Todas las inputs en las últimas 6 horas:

 select * from mytable where start_stamp >= now() - interval 6 hour; 

Todas las inputs en los últimos 2 días:

 select * from mytable where start_stamp >= now() - interval 2 day; 

Todas las inputs en los últimos 2 1/2 días:

 select * from mytable where start_stamp >= now() - interval 2 day - interval 12 hour;