Cálculo de dias
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...
Discussão (4)
Carregando comentários...