php / mysql - date_format e a parte do tempo
-
13-09-2019 - |
Pergunta
Desculpas se isso já foi respondido muitas vezes, mas eu era incapaz de encontrar a resposta e eu estava desconcertado.
Eu tenho uma consulta mysql que aparentemente produz o resultado que eu quero, quando eu executá-lo no banco de dados - no entanto, quando eu executar a consulta através de PHP, ele não sai corretamente
.No banco de dados, as datas são armazenadas como esta:
2009-08-13T00:00:00
O que eu quero fazer é não exibir dados que é mais velho que data de hoje. Então, na cláusula where é fazer isso:
WHERE dateField1 >= DATE_FORMAT(now(),'%Y-%m-%d') AND dateField2 >= DATE_FORMAT(now(),'%Y-%m-%d')
A minha intenção é tirar a parte do tempo, como eu estava lutando para encontrar uma maneira de converter a parte da hora agora () à meia-noite.
Isso parece funcionar quando eu executá-lo em phpMyAdmin, mas quando eu executar o script php isso não acontece.
Todas as idéias?
Muito obrigado!
Solução
Isso parece funcionar quando eu executá-lo em phpMyAdmin, mas quando eu executar o script php isso não acontece.
Você não está usando algo como sprintf
para construir a string é você? Se assim for, você precisa escapar da %
com outro %
Em qualquer caso, você pode usar a função DATE()
WHERE `dateField1` > DATE(NOW())
Outras dicas
nickf é certo. Eu concordo com isso.
No caso de utilizar () função sprintf para fazer uma chamada SQL, você pode transformar sua consulta a este:
$query = sprintf("SELECT * FROM SOME_TABLE WHERE id=%s AND dateField1 >= DATE_FORMAT(now(),'%%Y-%%m-%%d') AND dateField2 >= DATE_FORMAT(now(),'%%Y-%%m-%%d')", $id);
//Then submit $query for SQL query processing...
PHP veja% como especificador de tipo ao usar sprintf ().
Para sair dessa, você precisa adicionar mais um% em frente a cadeia de formato MySQL,, d ou seja %% Y ou %% m ou %%. A saída real para consulta MySQL se tornaria% Y% ou m ou% d novamente.