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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top