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 declaración 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.
fuente
DATE_FORMAT(create_date, '%m/%d/%Y')
... WHERE create_date BETWEEN (NOW() - INTERVAL 30 DAY) AND NOW()
DATE_FORMAT
devuelve una cadena, por lo que está usando dos cadenas en suBETWEEN
cláusula, que no funcionará como espera.En su lugar, convierta la fecha a su formato en
SELECT
y haga lasBETWEEN
fechas reales. Por ejemplo,fuente
También puedes escribir esto en mysql -
FIJO
fuente
Para la actividad de fecha actual y la actividad completa de los 30 días anteriores, use esto, ya que SYSDATE es variable en un día el día 30 anterior no tendrá todos los datos para ese día.
fuente
Aquí hay una solución sin usar la
curdate()
función, esta es una solución para aquellos que usanTSQL
, supongofuente