GARANTIR DESCONTO

Fórum Cálculo dos Dias Vencidos Via Sql #351452

06/01/2008

0

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.


Microbios

Microbios

Responder

Posts

06/01/2008

Darkrme

Amigo, usa essa função pra retornar a diferenca de dias entre duas datas...

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;



Responder

Gostei + 0

06/01/2008

Microbios

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:


Responder

Gostei + 0

06/01/2008

Joaoshi

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.


Responder

Gostei + 0

06/01/2008

Microbios

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:


Responder

Gostei + 0

10/01/2008

Djjunior

select (current_date -vencimento ) as dias, count(*)
from tabela
group by (dtVencimento -sysdate) desc
having (dtVencimento -sysdate) >= Dias


Responder

Gostei + 0

11/01/2008

Microbios

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!


Responder

Gostei + 0

11/01/2008

Djjunior

Complementando a solução do [b:ba0d5bb4aa]joaoshi[/b:ba0d5bb4aa] faça:

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;
 
[/b]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar