Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Conseguir valor da diferença entre datas


K!ko

Pergunta

Ola amigos...

bom... eu preciso de uma função ou rotina que calcule a diferença entre a data atual e a data de vencimento de um boleto de pagamento... isso é pra calcular atraso do pagamente desses boletos...

fiz algumas rotinas e funções, no entanto o resultado obtido não foi exatamente o que eu esperava

se alguém puder me ajudar... :D

agradecido desde já!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Ola amigos...

bom... eu preciso de uma função ou rotina que calcule a diferença entre a data atual e a data de vencimento de um boleto de pagamento... isso é pra calcular atraso do pagamente desses boletos...

fiz algumas rotinas e funções, no entanto o resultado obtido não foi exatamente o que eu esperava

se alguém puder me ajudar... :D

agradecido desde já!

A diferença entre uma data e outra é em dias e funciona assim: data_final - Data_atual = dias_de_diferença.

Especifique melhor sua pergunta se isto não te atender.

Link para o comentário
Compartilhar em outros sites

  • 0
A diferença entre uma data e outra é em dias e funciona assim: data_final - Data_atual = dias_de_diferença.

Especifique melhor sua pergunta se isto não te atender.

isto eu já fiz, resolveria se o resultado pretendido fosse por exemplo 15/02/2008...

mas o resultado pretendido é: atraso 7 dia(s)

eu só preciso que esse nº apareça.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
isto eu já fiz, resolveria se o resultado pretendido fosse por exemplo 15/02/2008...

mas o resultado pretendido é: atraso 7 dia(s)

eu só preciso que esse nº apareça.

K!ko, parece que você não testou o que o colega Denis Courcy lhe sugeriu, pois é exatamente o número de dias que lhe será retornado!

Se tiver dúvidas do porque, dê uma olhada na explicação que fiz neste post;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
isto eu já fiz, resolveria se o resultado pretendido fosse por exemplo 15/02/2008...

mas o resultado pretendido é: atraso 7 dia(s)

eu só preciso que esse nº apareça.

K!ko, parece que você não testou o que o colega Denis Courcy lhe sugeriu, pois é exatamente o número de dias que lhe será retornado!

Se tiver dúvidas do porque, dê uma olhada na explicação que fiz neste post;

Abraços

se eu criar 3 variaveis: data_final, data_atual, atraso; todas como Tdatetime...

e fazer o seguinte:

while not(dsetRC.eof) do
         begin
           whit rdprint1 do
              if dsetRC.fieldbyname('rcemiscar').asString = 'S' then
              begin
                data_final:= dsetRC.fieldbyname('rcvenc').asDateTime;
                data_atual:= Now; ou Date
                atraso:= data_final - data_atual;
                ...
              end;
            ...
         end;

isso vai me trazer a quantidade de dias de atraso?

este while eu estou usando... na verdade tem mais coisas no código...

estou "andando" a tabela toda e pegando alguns registros dela... só o que estão marcados pelo campo "rcemiscar" quando o mesmo é igual "S"...

este código esta dentro de uma rotina para impressão de carta de cobrança usando RDPrint;

Link para o comentário
Compartilhar em outros sites

  • 0
se eu criar 3 variaveis: data_final, data_atual, atraso; todas como Tdatetime...

isso vai me trazer a quantidade de dias de atraso?

K!ko, mas já não foi isso que dissemos... :huh:

Apenas sugiro que você utilize Date. Now, retorna a hora agregado e você terá um resultado fracionário.

Se você leu o post que mencionei, lá eu digo: o tipo TDateTime (que é na verdade um Double)

então, é importante que você não utilize a parte fracionária (correspondente à horas).

Mas, se você preferir utilizar uma variável inteira para armazenar a quantidade dias, faça assim:

atraso := Trunc(data_final - Date);

em teoria você não precisa nem declara data_atual... (mas não sei se você utiliza em outro ponto do código)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
se eu criar 3 variaveis: data_final, data_atual, atraso; todas como Tdatetime...

isso vai me trazer a quantidade de dias de atraso?

K!ko, mas já não foi isso que dissemos... :huh:

Apenas sugiro que você utilize Date. Now, retorna a hora agregado e você terá um resultado fracionário.

Se você leu o post que mencionei, lá eu digo: o tipo TDateTime (que é na verdade um Double)

então, é importante que você não utilize a parte fracionária (correspondente à horas).

Mas, se você preferir utilizar uma variável inteira para armazenar a quantidade dias, faça assim:

atraso := Trunc(data_final - Date);

em teoria você não precisa nem declara data_atual... (mas não sei se você utiliza em outro ponto do código)

Abraços

então cara... eu fiz de outro jeito...

criei uma UDF do banco que faz o calculo... eu pensei que da maneira que fiz seria mais dificil... no entanto acabou sendo o mais facil...

ficou assim:

selecionaiq(qraux,' Select udf_daysbetween(current_date,'''+dtos(DsetRC.fieldbyname('rcvenc').AsDateTime)+''')atraso  from rc');
imp(contlinha,88, qraux.fieldbyname('atraso').AsString +' Dia(s)');

eu testei do jeito que você falou e deu certo também... eu não estava entendendo oque você estava querendo dizer...

e também não sabia usar "trunc"... pra que serve exatamente?

se quiser pode considerar o tópico como resolvido.

vlws pelas dicas...

abraço

Editado por K!ko
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...