Marcio_123 1 Denunciar post Postado Maio 25, 2020 pessoal blllll to precisando listar no banco uns registro com renovação próxima de vencer. EX: tenho um Cliente cadastrado em 01/05/2020 preciso selecionar ele proximo da renovação do contrato que se dar apos 6 meses ou 180 dias, dessa data que foi cadastrado. SELECT * FROM tb_renovaçao where DATE_ADD(data_pgto, INTERVAL 180 DAY)"); // ou seja no caso ai estou selecionando registro que estão com data de 180 dias da data que fiz o cadastro. mas ele não retorno os registros dentro do prazo. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Maio 26, 2020 Aparentemente sua query esta errada, não tenho como testar no momento. Mas o correto seria algo assim: mysql> SELECT DATE_ADD( '2011-01-01', INTERVAL 6 month ); +--------------------------------------------+ | DATE_ADD( '2011-01-01', INTERVAL 6 month ) | +--------------------------------------------+ | 2011-07-01 | +--------------------------------------------+ SELECT * FROM tb_renovacao WHERE data_pgto = DATE_ADD(CURDATE(), INTERVAL 180 DAY)"); SELECT * FROM tb_renovacao WHERE data_pgto = DATE_ADD(NOW(), INTERVAL 180 DAY)"); Observaçao: Não use acentução etc em nomes de bancos e tabelas. Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 26, 2020 ola Williams blll, fiz esse SELECT mas não voltou registros algum SELECT * FROM tb_renovacao WHERE data_pgto = DATE_ADD(CURDATE(), INTERVAL 6 month) nesse caso ai estou trazendo apenas datas acrescentadas de 6 meses ou 180 dias certo ? com base no meu campo data que esta gravado, detalhe meu campos esta com formato VARCHAR. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Maio 26, 2020 Normalize seu banco, data ou é date, datetime ou timestamp etc, menos varchar. ou use strtotime para esta modificação da data! $day = date('d-m-Y'); $newDate = date('d/m/Y', strtotime($day . " +6 month")); echo $newDate; // 26/11/2020 SELECT * FROM tb_renovacao WHERE data_pgto = $newDate Compartilhar este post Link para o post Compartilhar em outros sites
Jack Oliveira 1 Denunciar post Postado Maio 27, 2020 Olá @Williams Duarte aproveitando o post do amigo ai Quando no banco de dados ele contem duas forma de pagamento EX: vencimento a cada 30 dias vencimento por ano como posso apresentar Neste caso como posso classificar das datas de 30 dias e 365 dias Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Maio 28, 2020 9 horas atrás, Jack Oliveira disse: Olá @Williams Duarte aproveitando o post do amigo ai Quando no banco de dados ele contem duas forma de pagamento EX: vencimento a cada 30 dias vencimento por ano como posso apresentar Neste caso como posso classificar das datas de 30 dias e 365 dias Frequentemente deixo algumas Schedules rodando! docker run -d image_name '*/30 * * * * ___cmdstring___' Se é uma recorrencia mensal, que vence daqui 7 dias, jogo em uma fila e disparo a cobrança. Um dia antes do vencimento, vejo quem ainda no pagou e disparo um outro aviso. 3 dias depois outro, nao pagou, dispara um aviso de bloqueio após alguns dias , isto você controla em flags no DB Se a recorrencia é trimestral, semestral ou anual, não faz diferença na consulta, o importante é declarar no select, qual é o intervalo. SELECT DATE_ADD( CURDATE(), INTERVAL 7 days ); SELECT DATE_ADD( CURDATE(), INTERVAL 1 days ); E fazer o filtro. Obs, você tem que ter outros Jobs analisando cadastro etc, para nao ter erro nas cobranças, mas tudo depende das regras de negocios. Compartilhar este post Link para o post Compartilhar em outros sites