Cálculo dos Dias Vencidos Via Sql
Olá Pessoal!
Meu problema é o seguinte:
Preciso levantar as duplicatas que estão a ´X´ dias já vencidas a partir do seu vencimento, ou seja, data de vencimento 31/12/2007, hoje é 06/01/2008 então ela está vencida a 6 dias já. Esse é o valor que eu vou informar no sistema: DUPLICATAS VENCIDAS A MAIS DE: ´X´ dias...
Isso usando o MYSQL (versão 4.0.20d) como SGBD e via SQL. Alguém tem idéia de como eu posso fazer isso?
Estou fazendo (vencimento - current_date), mas me retorna também as duplicatas que tem vencimento entre 01/01 e 06/01 de 2008.
Informei a versão do MySql porque nessa versão não tem a função DATEDIFF(data1,data2).
Obrigado aos que puderem me ajudar.
Meu problema é o seguinte:
Preciso levantar as duplicatas que estão a ´X´ dias já vencidas a partir do seu vencimento, ou seja, data de vencimento 31/12/2007, hoje é 06/01/2008 então ela está vencida a 6 dias já. Esse é o valor que eu vou informar no sistema: DUPLICATAS VENCIDAS A MAIS DE: ´X´ dias...
Isso usando o MYSQL (versão 4.0.20d) como SGBD e via SQL. Alguém tem idéia de como eu posso fazer isso?
Estou fazendo (vencimento - current_date), mas me retorna também as duplicatas que tem vencimento entre 01/01 e 06/01 de 2008.
Informei a versão do MySql porque nessa versão não tem a função DATEDIFF(data1,data2).
Obrigado aos que puderem me ajudar.
Microbios
Curtidas 0
Respostas
Darkrme
06/01/2008
Amigo, usa essa função pra retornar a diferenca de dias entre duas datas...
talvez posa te ajudar, eu uso muito ela:
talvez posa te ajudar, eu uso muito ela:
function DifDias(DataVenc:TDateTime; DataAtual:TDateTime): String; Var Data: TDateTime; dia, mes, ano: Word; begin if DataAtual < DataVenc then begin Result := ´A data data atual não pode ser menor que a data inicial´; end else begin Data := DataAtual - DataVenc; DecodeDate( Data, ano, mes, dia); Result := FloatToStr(Data); end; end;
GOSTEI 0
Microbios
06/01/2008
Amigo DarkMe, obrigado pela sua sugestão, eu também uso muito essa função, mas o que eu preciso é de uma [b:397a9af788]instrução SQL[/b:397a9af788] para que me retorne as duplicatas que estão a ´X´ dias já vencidas para um relatório.
Obrigado por sua ajuda. :wink:
Obrigado por sua ajuda. :wink:
GOSTEI 0
Joaoshi
06/01/2008
Colega,
SELECT * FROM DUPLICATAS
WHERE VENCIMENTO < (CURRENT_DATE - 6)
AND BAIXA IS NULL
Isto é só um começo, e pode ser melhorado com parametros.
Não conheço o MySql utilizei o CURRENT_DATE seguindo seu exemplo.
Espero ter ajudado.
SELECT * FROM DUPLICATAS
WHERE VENCIMENTO < (CURRENT_DATE - 6)
AND BAIXA IS NULL
Isto é só um começo, e pode ser melhorado com parametros.
Não conheço o MySql utilizei o CURRENT_DATE seguindo seu exemplo.
Espero ter ajudado.
GOSTEI 0
Microbios
06/01/2008
Amigo joaoshi;
Este modelo eu já havia tentado antes também. Funciona para o prazo de 6 dias de vencidas. Mas se aumentar o prazo, por exemplo pra 10 dias ou 15 dias não retorna nada. Pra 7 dias da ´DATA CORRENTE´ já não retorna nada. E listando sem separar nada, existem duplicatas vencidas com mais de 10 dias até.
Obrigado pela ajuda, vou continuar quebrando a cabeça ou esperando uma luz do pessoal. :wink:
Este modelo eu já havia tentado antes também. Funciona para o prazo de 6 dias de vencidas. Mas se aumentar o prazo, por exemplo pra 10 dias ou 15 dias não retorna nada. Pra 7 dias da ´DATA CORRENTE´ já não retorna nada. E listando sem separar nada, existem duplicatas vencidas com mais de 10 dias até.
Obrigado pela ajuda, vou continuar quebrando a cabeça ou esperando uma luz do pessoal. :wink:
GOSTEI 0
Djjunior
06/01/2008
select (current_date -vencimento ) as dias, count(*)
from tabela
group by (dtVencimento -sysdate) desc
having (dtVencimento -sysdate) >= Dias
from tabela
group by (dtVencimento -sysdate) desc
having (dtVencimento -sysdate) >= Dias
GOSTEI 0
Microbios
06/01/2008
djjunior;
Cara, legal, mas quais são as duplicatas? Esta Sql (que apresentava um errinho na cláusua having (era dias e não vencimento >= Xdias)) faz a contagem da duplicatas e apresenta a quantidade de dias. Eu preciso saber quais são elas, de que clientes... etc e tal.
:lol: :lol:
Valeu pela ajuda, continuamos tentando achar uma solução para tal problema.
Obrigadão!
Cara, legal, mas quais são as duplicatas? Esta Sql (que apresentava um errinho na cláusua having (era dias e não vencimento >= Xdias)) faz a contagem da duplicatas e apresenta a quantidade de dias. Eu preciso saber quais são elas, de que clientes... etc e tal.
:lol: :lol:
Valeu pela ajuda, continuamos tentando achar uma solução para tal problema.
Obrigadão!
GOSTEI 0
Djjunior
06/01/2008
Complementando a solução do [b:ba0d5bb4aa]joaoshi[/b:ba0d5bb4aa] faça:
Sua query
antes de abrir a query
[/b]
Sua query
SELECT * FROM DUPLICATAS WHERE VENCIMENTO < (CURRENT_DATE - :qtdeDias) AND BAIXA IS NULL
antes de abrir a query
query.close; query.parambyname(´qtdeDias´).asinteger := strtoint(edtPeriodo.Text); query.Open;
GOSTEI 0