Ir para conteúdo
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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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