Jump to content

Concatenar nome de campo com date('Y-m')


Carlos Rocha
 Share

Recommended Posts

Tenho a seguinte consulta:

   function retornaClientesDevedores ($mesReferencia, $dias) {

    require_once "PhpUtil.php"; 
    $PhpUtil = new PhpUtil(); 

    $string = "SELECT idClientes, nome FROM clientes WHERE idClientes IN ( 
       SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
        SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."') 
         ) and ".$PhpUtil->diferencaDatas(date('Y-m-d'), date('Y-m')."-diaVencimento'".)->days." > ".$dias."
         UNION
        SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN                                               (SELECT distinct(idPlanoClientes) FROM pagamentos)
             ) ";         
       }

Minha dificuldade é que tenho uma função que vem de uma classe. Essa função pede duas datas. Uma atual e outra que preciso pegar a data atual sem o dia, portanto `date('Y-m')` e concatenar com um campo `diaVencimento` da tabela para montar a data e gerar com isso 2015-09-diaVncimento. Como fazer essa concatenação no PHP?

Link to comment
Share on other sites

HappyHippyHippo

por mais que leia o teu post não consigo entender a 100% o que pretendes, no entanto, fiquei com a ideia do que o que pretendes não é possível efectuar de uma só vez no PHP pois necessitas de dados existentes na base de dados.

o que podes fazer é a concatenação em SQL usando a função concat

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Pensando bem me parece que nem vou precisar disso.

Um Cliente tem um plano e se compromete a pagar todo dia '15' por exemplo. Então, no dia '7'$ por exemplo quero tirar a lista do mês.

Como só entra os que ainda não pagaram e que tem uma carência de 5 dias após a data, logo tria que fazer (diaHoje - DiaVencimento) o que dará (7-15 = -8) que é menor que os 5 dias de carência.

Na verdade é o seguinte

A função que estou usando é:

 function diferencaDatas ($dataInicio, $dataFim) {
$dataInicio = new DateTime($dataInicio);
$dataFim  = new DateTime($dataFim);
$diferencas = $dataInicio->diff($dataFim);

return $diferencas;
 }

Chamada:

$dataHoje = date('Y-m-d');

$dataVencimento = date('Y-m')."-dataVencimento ";

$diasDiferenca = diferencaDatas ($dataHoje , $dataVencimento ) ->days;

Saber quantos dias de diferença são.

Mas como a listagem será efetuada sempre dentro do mesmo mês, tanto $diaHoje quanto o $diaVencimento ocorrerão no mesmo mês, logo não precisarei da função bastando fazer a simples diferença entre eles.

Estou certo em meu raciocínio?

Pois se eu vou tirar a listagem por exemplo no dia 25, o mês é 09. Logo, vou pegar a data da listagem (25) e tirar o dia do vencimento (caso ainda não tenha sido paga) se der até 5, esta no prazo, caso contrário, esta em débito.

Link to comment
Share on other sites

classe corrigida.

<?php
class Relatorios {

private $conexao;

public function __construct ($_conexao) { 
   $this->conexao = $_conexao;
}
/*
    //COMENTÁRIO DA FUNÇÃO ABAIXO
//SELECIONAR OS ID'S E OS NOMES DOS CLIENTES
$string = "SELECT idClientes, nome FROM clientes WHERE idClientes IN ( 
                  //SELECIONAR ID'S DOS CLIENTES QUE TEM PLANOS E QUE A DIA DE VENCIMENTO É MENOR QUE A O DIA ATUAL
SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
  //MAS NÃO PAGARAM A PARCELA DO MES CORRENTE 
SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."') 
                 ) and DATEDIFF (curdate(), CONCAT('".date('Y-m')."','-', diaVencimento)) > ".$dias."
 //UNIÃO COM
UNION
   //SELECIONAR ID'S DOS CLIENTES QUE TEM PLANOS E QUE NÃO PAGARAM NENHUMA PARCELA
SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN                                               (SELECT distinct(idPlanoClientes) FROM pagamentos)
 ) ";         
*/

function retornaClientesDevedores ($mesReferencia, $dias) {

$retorno = array();

$string = "SELECT DISTINCT(idClientes), nome FROM clientes WHERE idClientes IN ( 
             SELECT idClientes FROM planosclientes WHERE idPlanosClientes IN (
SELECT distinct(idPlanoClientes) FROM pagamentos WHERE mesReferencia NOT IN ('".$mesReferencia."') 
) and DATEDIFF (curdate(), CONCAT('".date('Y-m')."','-', diaVencimento)) > ".$dias."
UNION
SELECT idPlanosClientes FROM planosclientes WHERE idPlanosClientes NOT IN                                               (SELECT distinct(idPlanoClientes) FROM pagamentos)
 ) ORDER BY nome";        

$dados =  $this->conexao->query($string);   

if($dados->num_rows == 0) {
$retorno = null;
}
else {
$contador = 0;
while ( list ($idClientes, $nomeClientes) = $dados->fetch_row())   {
$retorno[$contador][0] = $idClientes;
$retorno[$contador][1] = $nomeClientes;
$contador++;
}
}

     return $retorno;
 }
}
?>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.