Estoy tratando de ejecutar una declaración de selección de mysql donde mira la fecha de hoy y solo devuelve los resultados que se registraron en ese día actual. Actualmente he intentado lo siguiente, pero parece que no funciona.
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE users.signup_date = CURDATE()
Modifiqué mi SELECT
declaración a esto, gracias chicos.
SELECT id FROM users WHERE DATE(signup_date) = CURDATE()
signup_date
es el campo de fecha y horasignup_date
si contiene la hora, entonces querrá usar el formato date_format en laWHERE
cláusula para quitar la hora para que coincida conCURDATE()
mysql_num_rows
no muestra 0. Solo un espacio en blanco.Respuestas:
fuente
DATETIME
.signup_date
, incluso si tal índice existe). Prefiero la solución de Serjio .< '2017-08-31 00:00:00'
en caso de que esté usando una versión de MySQL con milisegundos.Esta consulta usará index si lo tiene para el
signup_date
campofuente
signup_date
, a diferencia de otros enfoques.signup_date
entre dos tiempos es correcta, pero los tiempos no lo son. Debe ser entre00:00
y23:59:59
en la fecha actual.WHERE DATE(signup_date) = CURDATE()
tomó mi servidor de ~ 50 ms, esta de aquí 0,8 ms.Parece que necesita agregar el formato a
WHERE
:Ver SQL Fiddle con demostración
fuente
Puede usar
CONCAT
conCURDATE()
para todo el tiempo del día y luego filtrar usando la condiciónBETWEEN
inWHERE
:fuente