Ir para conteúdo

POWERED BY:

Arquivado

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

[MCR]Hammerfall

Cálculo de dias

Recommended Posts

Senhores...Estou desenvolvendo um sistema no qual toda a regra estarei colocando no SGBD, mas estou com dificuldades na lógica abaixo:Tenho esta tabela:mysql> select * from pagar;+--------+------------+-------+------+| nome | vencimento | valor | pago |+--------+------------+-------+------+| Paulo | 2005-02-15 | 250 | n || Pedro | 2005-01-10 | 250 | n || Marcos | 2005-02-01 | 250 | n |+--------+------------+-------+------+3 rows in set (0.02 sec)Preciso que o sistema calcule quantos dias o aluno está com o pagamento atrasado apartir da data atual comparando com o seu vencimento.Fiz isto e deu certo.mysql> select curdate(), vencimento, dayofyear(curdate())-dayofyear(vencimento) from pagar where dayofyear(curdate())>dayofyear(vencimento);+------------+------------+--------------------------------------------+| curdate() | vencimento | dayofyear(curdate())-dayofyear(vencimento) |+------------+------------+--------------------------------------------+| 2005-02-28 | 2005-02-15 | 13 || 2005-02-28 | 2005-01-10 | 49 || 2005-02-28 | 2005-02-01 | 27 |+------------+------------+--------------------------------------------+3 rows in set (0.00 sec)Mas o problema é se a data de vencimento for no anto anterior ao atual, o calculo de dias após o vencimento não sai correto.mysql> select dayofyear('2005-01-15') as atual, dayofyear('2004-12-31') as vence, dayofyear('2005-01-15')-dayofyear('2004-12-31') as diferenca;+-------+-------+-----------+| atual | vence | diferenca |+-------+-------+-----------+| 15 | 366 | -351 |+-------+-------+-----------+1 row in set (0.00 sec)Alguém conhece uma solução para esta regra, ou não tem como fazer no mysql ??? De repente precisarei utilizar um outro SGBD para usar "Stored Procedures"???Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

TO_DAYS:

TO_DAYS(NOW())-TO_DAYS(data_vencimento)

TO_DAYS fransforma data em dias, ok? ;) ^_^
Caramba !!!, Deu certinho, você é o cara, obrigado mesmo!!!mysql> select TO_DAYS(NOW())-TO_DAYS('2004-12-10');+--------------------------------------+| TO_DAYS(NOW())-TO_DAYS('2004-12-10') |+--------------------------------------+| 80 |+--------------------------------------+1 row in set (0.00 sec)Abraços... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.