Fórum Somando horas com em Campos Varchar #47656
22/10/2004
0
Tap_pedroso
Curtir tópico
+ 0Posts
22/10/2004
Tap_pedroso
SET TERM # ; CREATE PROCEDURE SOMAHORAS(DATA1 DATE, DATA2 DATE, CODFUNC VARCHAR(13))RETURNS (FUNC VARCHAR(13), HORAS TIMESTAMP)AS BEGIN FOR SELECT CODFUNCBARRAS, SUM (CAST(TOTAL AS TIMESTAMP))AS HORAS FROM CARGAHORA WHERE CODFUNCBARRAS=:CODFUNC AND DATA BETWEEN :DATA1 AND :DATA2 INTO :FUNC, :HORAS DO SUSPEND; END SET TERM ;
mas deu erro :lol:
Gostei + 0
23/10/2004
Afarias
2:30 = 2,5
Até pq, como vc mesmo disse as horas podem ir até 500h... mas no formato de hora sua intenção é guardar a quantidade de horas de 1 dia que é no máximo 24h (0:00 à 23:59) -- e ainda assim, não é uma quantidade, mas um ´estado´
T+
Gostei + 0
23/10/2004
Tap_pedroso
Gostei + 0
23/10/2004
Afarias
uma forma de converter no Delphi seria::
var
s: string;
h, m: Integer;
s := FieldByName(´hora´).AsString; { ´09:40´ }
h := StrToInt(Copy(s, 1, Pos(´:´, s)-1));
m := StrToInt(Copy(s, Pos(´:´, s)+1, 2));
FieldByName(´hora2´).AsCurrency := h + (m/60);
veja q não converto a hora em string para DateTime, pq pode haver algum valor como ´28:30´ que resultaria em erro.
Bom, esse mesmo código pode ser executado no banco, mas vc tem q usar pelo menos uma função SubString, q no IB ou FB < 1.5 só com UDF
T+
Gostei + 0
23/10/2004
Afarias
update table nome_tabela
set hora2=cast(substr(hora, 1, 2) as integer)+
cast(substr(hora, 4, 5) as integer)/60.0;
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)