RESOLVIDO! Select sem retorno

Tenho este select e não consigo obter nenhum valor. que estou fazendo mal?
//getting the current date from php
$xdtinicio={data_inicio};
$xdtfinal={data_final};
$sql=“select MAX(tmaxima) as tmaxima from medicoes where date(datahora) BETWEEN “.$xdtinicio.” AND “.$xdtfinal.” and tmaxima>0”;
sc_lookup(ds,$sql);
{tensaomaxmax}={ds[0][0]};

campo datahora é um datetime os outros campos são data normal

Sinceramente apenas com o seu código fica difícil lhe ajudar. Você terá que verificar se o formato das datas estão iguais ao banco de dados. Se não estiverem, você terá que converter elas para o formato do banco de dados. Você também pode printar esse seu select após a variável $sql ser construída e verificar o código que está sendo formado, além disso, com esse código SQL você poderá testar ele no banco de dados e verificar se está retornando alguma coisa. Caso ele esteja retornando alguma coisa, o erro estará do lockup para baixo, o que acho muito difícil. Outra coisa, é importante realizar validações dos dados retornados do banco, não é uma boa prática não validar os dados antes de inserir em um campo.

Datas são encapsuladas em instrução sql.
Coloque no modo debug e vai ver que a instrução causa erro.

Instrução sal??? :thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking::thinking:

Testei no Comando SQL
select MAX(tmaxima) as tmaxima from medicoes where date(datahora) BETWEEN “2023-12-01” AND “2024-01-20” and tmaxima>0
e tenho o retorno 180 que está correto

As datas estão todas no formato yy-mm-dd
O campo datahora esta no formato yy-mm-dd hh:mm
por isso converto com date()

No modo Debug Não origina nenhum erro Resulta do debug
(pdo-mysql): select MAX(tmaxima) as tmaxima from medicoes where date(datahora) BETWEEN 2023-12-20 AND 2024-01-31 and tmaxima>0
(pdo-mysql): select MIN(tmaxima) as tminima from medicoes where tmaxima>0 and date(datahora)>=2023-12-20 and date(datahora)<=2024-01-31
(pdo-mysql): select AVG(tmaxima) as tmedia from medicoes where tmaxima>0 and date(datahora)>=2023-12-20 and date(datahora)<=2024-01-31
(pdo-mysql): select count(*) AS countTest from estatistica where numero = 1
(pdo-mysql): UPDATE estatistica SET data_inicio = ‘2023-12-20’, data_final = ‘2024-01-31’, tensaomaxmax = 0, tensaomaxmin = 0, tensaominmax = 0, tensaominmin = 0, tensaomaxmedia = 0, tensaominmedia = 0, pulsacaomax = 0, pulsacoamin = 0, pulsacaomedia = 0, glicemiamax = 0, glicemiamin = 0, glicemiamedia = 0 WHERE numero = 1
(pdo-mysql): SELECT numero, data_inicio, data_final, tensaomaxmax, tensaomaxmin, tensaominmax, tensaominmin, tensaomaxmedia, tensaominmedia, pulsacaomax, pulsacoamin,

No debug suas datas não estão encapsuladas com aspas.

Note bem a instrução sql do debug no between.

RESOLVIDO Obrigada Haroldo
$sql=“select MAX(tmaxima) as tmaxima from medicoes where date(datahora) BETWEEN ‘$xdtinicio’ AND ‘$xdtfinal’ and tmaxima>0”;

2 Curtidas