(RESOLVIDO)Filtro de uma consulta, intervalo de data

Boa Tarde amigos, então estou com uma dificuldade no filtro de um intervalo de data em uma consulta.
nesse filtro a ideia é que na autorize um intervalo maior que 31 dias.
só que não está funcionando no OnValidate do filtro avançado.
o seguinte codigo:

$a1 = {dt_execucao_dia};
$a2 = {dt_execucao_mes};
$a3 = {dt_execucao_ano};
//uso para pegar os intervalos do campo 1 data

$a4 = $a3."-".$a2."-".$a1;
//uso para concatenar no formato americano do campo 1

$b1 = {dt_execucao_input_2_dia};
$b2 = {dt_execucao_input_2_mes};
$b3 = {dt_execucao_input_2_ano};
//uso para pegar os intervalos do campo 2 data

$b4 = $b3."-".$b2."-".$b1 ;
//uso para concatenar no formato americano do campo 1

$t1 = sc_date_dif($a4, “aaaa-mm-dd”, $b4, “aaaa-mm-dd”);
//uso para tirar a diferença da data

if($t1 > 31){
sc_error_message(“data invalida”);
}
else{
echo “teste”;
}
sc_alert(“teste0”);

Copie e guarde seu código.

Use primeiro echo para testar se esta pegando corretamente Dia, Mês e Ano.

echo '1 DIA = '.{dt_execucao_dia}."<BR>";
echo '1 MÊS = '.{dt_execucao_mes}."<BR>";
echo '1 ANO = '.{dt_execucao_ano}."<BR>";
echo '---'."<BR>";
echo '2 DIA = '.{dt_execucao_input2_dia}."<BR>";
echo '2 MÊS = '.{dt_execucao_input2_mes}."<BR>";
echo '2 ANO = '.{dt_execucao_input2_ano}."<BR>";
die(); // Aqui encerramos a execução do Script para analisar.

Depois que confirmar que esta pegando realmente os dados das datas use esta rotina:

// Uso para pegar os intervalos do campo 1 data

$_Dia = {dt_execucao_dia};
$_Mes = {dt_execucao_mes};
$_Ano = {dt_execucao_ano};

$_DataInicial = new DateTime(date("Y-m-d", mktime(0, 0, 0, $_Mes, $_Dia, $_Ano)));


// Uso para pegar os intervalos do campo 2 data

$_Dia = {dt_execucao_input_2_dia};
$_Mes = {dt_execucao_input_2_mes};
$_Ano = {dt_execucao_input_2_ano};

$_DataFinal = new DateTime(date("Y-m-d", mktime(0, 0, 0, $_Mes, $_Dia, $_Ano)));

$_Intervalo = $_DataInicial->diff($_DataFinal);

// echo "Intervalo é de {$_Intervalo->y} anos, {$_Intervalo->m} meses e {$_Intervalo->d} dias";

if ($_Intervalo->days>31) {
    sc_error_message("Data Maior que 31 Dias!!<BR>");
}
2 Curtidas

opa, obrigado jailton vou testar, o echo ja tinha feito e tava passando.

forçar a parada com sc_error_exit() talvez?

isso veio a calhar, porem descobrir um problematica nesse codigo, ele começa contar do 0, entao para chekar 31 dias, tenho que colocar 30, no mais deu certo.
muito obrigado Jailton funcionou muito bem.

1 Curtida

tinha tentado antes, o exemplo do @Jailton deu certo. obrigado também Haroldo pela a disposição.

1 Curtida