[firebase-br] Contar tempo (anos, meses e dias)
Eduardo Jedliczka
edujed em gmail.com
Seg Jun 20 10:44:41 -03 2011
Se estiver utilizando o Firebird 2.1 (ou maior) veja este link:
http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-datediff.html
Aí fica fácil, faça a conta com anos, meses (mod 12) e só faça
pequenas verificações quanto aos "dias".
abraço.
==========================
Eduardo Jedliczka
Apucarana - Pr
==========================
Em 20 de junho de 2011 09:51, HPensador <hpensador em gmail.com> escreveu:
> Bom dia Colegas!
>
> Tenho um relatório no meu sistema que é uma certidão de tempo de serviço,
> para calcular o tempo de serviço utilizo um método feito em pascal que
> recebe como paramentros a data inicial e final e me retorna a quantidade de
> anos, meses e dias. Como no delphi temos varios métodos nativos para
> manipulação de datas foi tranquila a criação deste método. Pórem agora eu
> gostaria de ter este método no Firebird (SP), já fiz uma pesquisa na net +
> não encontrei nada especifico. Algum colega que tenha algo neste sentido
> poderia compartilhar.
>
> Abaixo o referido método em pascal:
>
> function AnosMesesDias(DI, DF: TDateTime): String;
> var
> TAnos, TMeses, TDias, M : Integer;
> begin
> TAnos := YearOf(DF) - YearOf(DI);
> if MonthOf(DI) > MonthOf(DF) then
> TAnos := TAnos - 1;
> if MonthOf(DF) < MonthOf(DI) then
> TMeses := 12 - MonthOf(DI) + MonthOf(DF)
> else
> TMeses := MonthOf(DF) - MonthOf(DI);
> if DayOf(DF) < DayOf(DI) then
> begin
> TMeses := TMeses - 1;
> if MonthOf(DF) = MonthOf(DI) then
> begin
> TAnos := TAnos - 1;
> TMeses := 11;
> end;
> end;
> TDias := DayOf(DF) - DayOf(DI);
> if TDias < 0 then
> begin
> M := MonthOf(DF) - 1;
> if M = 0 then
> M := 12;
> Case M of
> 1 : TDias := 31 + TDias;
> 2 : begin
> if ( (YearOf(DF) mod 4 = 0) and (YearOf(DF) mod 100 <> 0) or
> (YearOf(DF) mod 400 = 0) ) then
> TDias := 29 + TDias
> else
> TDias := 28 + TDias;
> end;
> 3 : TDias := 31 + TDias;
> 4 : TDias := 30 + TDias;
> 5 : TDias := 31 + TDias;
> 6 : TDias := 30 + TDias;
> 7 : TDias := 31 + TDias;
> 8 : TDias := 31 + TDias;
> 9 : TDias := 30 + TDias;
> 10 : TDias := 31 + TDias;
> 11 : TDias := 30 + TDias;
> 12 : TDias := 31 + TDias;
> end;
> end;
> Result := inttostr(TAnos) + ' ano(s), ' + inttostr(TMeses) + ' mes(es) e '
> +
> inttostr(TDias) + ' dia(s)';
> end;
>
> --
> []'s,
>
> Hélio Oliveira
> Bel. Ciência da Computação
> Técnico em Contabilidade
> e-mail : hpensador em gmail.com
> Skype : hpensador
> http://hpensador.blogspot.com/
> www.hpensador.net
> (71) 9975-9176
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista