Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcio_123

Criando uma seleção no banco de dados quando produto estiver vencendo

Recommended Posts

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

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

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

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

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
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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.