Então, eu tenho um banco de dados que possui datas de compras de N clientes... O que eu preciso, falando de forma básica é calcular se, da ultima data de compra, ou seja, a ultima compra do cliente, até o dia de hoje faz 90 dias, e se fizer, fazer algo...

Todas os detalhes de código já estão prontos, porém, eu travei na parte de transformar a data que vem do banco de dados no formato (Y,m,d H:i:s) numa string para poder fazer um diff, que no caso precisa da data numa string....

O código que da erro, eu filtre e é só essa parte

$cpf = "Um CPF que vem do select anterior";

$sql = $pdo ->prepare

(" SELECT MAX(prcl_DATAcompra) from procli where prcl_CPFclientes = :a ");

$sql -> bindvalue(":a",$cpf);

$sql ->execute();

if($sql -> rowCount () > 0 ){ $valor = $sql->fetch();

é nessa parte que eu não sei como transformar a data que vem do banco de dados numa string para poder usar o diff

}

Não me importa se será usado PDO ou qualquer outra coisa para pegar o dato, mas preciso fazer esse calculo de 90 dias....

perguntou Jan 09 às 18:29

giritexa's gravatar image

giritexa
21

Faz o calculo da diferença de data usando as funções na propria query do SQL, que tem funções mais precisas e rápidas.

São as funções DATEDIFF e GETDATE(), veja um exemplo, retornado o numero de dias em relação a data do dia:

SELECT DATEDIFF (day,
GETDATE(),
( SELECT MAX(prcl_DATAcompra) from procli where prcl_CPFclientes = :a));

link permanente

respondeu Jan 09 às 22:32

Deepouter's gravatar image

Deepouter
19192611.1k

Se está trabalhando com um campo data, não deve converte-lo para string, isso consome recursos desnecessários do DB. Todo DB tem funções especificas para cada caso, para datas não é diferente. O @Deepouter deu um bom exemplo de como fazer. Segue um exemplo no MySQL:

SELECT TIMESTAMPDIFF(DAY, '2018-02-01', NOW); Retorna a diferença da data para o dia de hoje em dias.

link permanente

respondeu Jan 14 às 22:53

callazzans's gravatar image

callazzans ♦
451210.7k

Sua resposta
mudar para preview

Siga esta pergunta

Por Email:

Uma vez que você entrar você poderá se inscrever para todas as atualizações aqui

Por RSS:

Respostas

Respostas e Comentários

Markdown Básico

  • *italico* ou __italico__
  • **negrito** or __negrito__
  • link:[texto](http://url.com/ "Qual é a sua dúvida?")
  • imagem?![alt texto](/path/img.jpg "Qual é a sua dúvida?")
  • lista numerada: 1. Foo 2. Bar
  • para adicionar uma quebra de linha basta adicionar dois espaços onde você gostaria que a nova linha estivesse.
  • tags HTML básicas também são suportadas

Tags

×157
×47
×18

pergunta feita: Jan 09 às 18:29

pergunta lida: 0 vezes

última alteração: Jan 14 às 22:53