ver una ultimos sentencia por obtener meses mes mayor fecha dias consulta como año actual mysql date select

una - MySQL Query-Registros entre hoy y los últimos 30 días



sentencia between mysql (6)

Aquí hay una solución sin usar la función curdate() , esta es una solución para aquellos que usan TSQL , supongo

SELECT myDate FROM myTable WHERE myDate BETWEEN DATEADD(DAY, -30, GETDATE()) AND GETDATE()

Quiero devolver todos los registros que se agregaron a la base de datos en los últimos 30 días. Necesito convertir la fecha a mm / dd / aa por motivos de visualización.

create_date between DATE_FORMAT(curdate(),''%m/%d/%Y'') AND (DATE_FORMAT(curdate() - interval 30 day,''%m/%d/%Y''))

Mi extracto no limita los registros a los últimos 30 días: selecciona todos los registros.

¿Alguien puede señalarme en la dirección correcta? Se siente como si estuviera cerca.

Gracias y que tenga una gran semana.


Para la actividad de la fecha actual y la actividad completa de los últimos 30 días, use esto, ya que el SYSDATE es variable en un día que el día 30 anterior no tendrá la información completa para ese día.

SELECT DATE_FORMAT(create_date, ''%m/%d/%Y'') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND SYSDATE()


También puedes escribir esto en mysql -

SELECT DATE_FORMAT(create_date, ''%m/%d/%Y'') FROM mytable WHERE create_date < DATE_ADD(NOW(), INTERVAL +1 MONTH);


DATE_FORMAT aplicar DATE_FORMAT en la cláusula SELECT , no en la cláusula WHERE :

SELECT DATE_FORMAT(create_date, ''%m/%d/%Y'') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()

También tenga en cuenta que CURDATE() devuelve solo la parte DATE de la fecha, por lo que si almacena create_date como DATETIME con la porción de tiempo llena, esta consulta no seleccionará los registros de hoy.

En este caso, deberá usar NOW lugar:

SELECT DATE_FORMAT(create_date, ''%m/%d/%Y'') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()


DATE_FORMAT devuelve una cadena, por lo que está utilizando dos cadenas en su cláusula BETWEEN , que no funcionará como espera.

En su lugar, convierta la fecha a su formato en SELECT y haga la BETWEEN para las fechas reales. Por ejemplo,

SELECT DATE_FORMAT(create_date, ''%m/%d/%y'') as create_date_formatted FROM table WHERE create_date BETWEEN (CURDATE() - INTERVAL 30 DAY) AND CURDATE()


SELECT * FROM < table_name > WHERE < date_field > BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW();