Estou tentando executar uma instrução select do mysql onde olha para a data de hoje e retorna apenas os resultados registrados naquele dia. Atualmente, tentei o seguinte, mas não parece funcionar.
SELECT users.id, DATE_FORMAT(users.signup_date, '%Y-%m-%d')
FROM users
WHERE users.signup_date = CURDATE()
Eu modifiquei minha SELECT
declaração para isso, obrigado pessoal.
SELECT id FROM users WHERE DATE(signup_date) = CURDATE()
signup_date
é o campo datetimesignup_date
se ele contém a hora, então você desejará usar o date_format naWHERE
cláusula para retirar a hora para corresponder aCURDATE()
mysql_num_rows
não exibe 0. Apenas um espaço em branco.Respostas:
fonte
DATETIME
.signup_date
, mesmo que esse índice exista). Prefira a solução de Serjio .< '2017-08-31 00:00:00'
caso você esteja usando uma versão do MySQL com milissegundos.Esta consulta usará o índice se você o tiver para o
signup_date
campofonte
signup_date
, ao contrário de outras abordagens.signup_date
entre duas vezes está correta, mas os tempos não. Deve ser entre00:00
e23:59:59
na data atual.WHERE DATE(signup_date) = CURDATE()
meu servidor demorou ~ 50 ms, este aqui 0,8 ms.Parece que você precisa adicionar a formatação ao
WHERE
:Veja SQL Fiddle com Demo
fonte
Você pode usar
CONCAT
comCURDATE()
para toda a hora do dia e, em seguida, filtrar usando a condiçãoBETWEEN
inWHERE
:fonte