Sumowanie czasu

0

Mam tabele w której znajduje się "czas" np. (w polu typu varchar)

| czas |
0015
0015

chciałbym w prosty sposób zsumować te wartości

 with ADOQuery, SQL do
      begin
        Close;
        Clear;
        Add('SELECT SUM(czas) FROM .... WHERE ....');
        Open;

Niestety tak nie mogę. Wydaje mi się iż SUM nie działa na tego typu polu. Jak to mogę obejść w prosty sposób. Proszę o pomoc.

0

Nie napisałeś co za baza.
Pierwsze primo jak żeś sobie wymyślił żeby czas trzymać w VARCHAR to teraz masz za swoje (użyj timestamp, lub float)
Drugie primo, może próbować wybrnąć z sytuacji robiąc sumę z wyniku rzutowania pola, ale jak widzę tego typu rozwiązania to mi się otwiera scyzoryk w kieszeni. Bazę trza projektować tak, żeby jak najprościej z niej korzystać.
W ostateczności możesz też zrobić SELECT czas ... + While not ADOQuery.Eof + StrToTime (?).

b

0

a nie mozesz zamienić podanych wartosci czasu na unix dodać do siebie i zapisac w bazie jako int(11) ? czy tam (10) :P

0

Oki wie ze spaprałem na samy początku. Zrobie tak:

Po zamieniam na float i w tabeli | czas| będę chciał przechowywać np. wartość jako godziny. Czyli było :

| czas |
0015
0015

będzie tak:

| czas |
0,0043
0,1015

tylko ze w Edit mam wartość: 0015 i nie wiem jak to przerobić na godziny tak żeby przeliczyć na wartość 0,1015 :((

Chodzi mi o rozkodowanie tej wartości 0015 na 0,1015 h.

0

Oki już nieważne dzięki za zainteresowanie. Zrobiłem tak jak pisałem wyżej.

procedure TForm1.Button1Click(Sender: TObject);
 var
wHour, wMin, wSec, wMSec: Word;
   time:TdateTime;
   h,m,s,w :single;

begin
Time := STrToTime(Edit1.text);   ;

  DecodeTime(Time, wHour, wMin, wSec, wMSec);

     h:=(wHour);
     m:= (wMin);
     s:= (wSec) ;
    w:=h+m/60+ s/3600  ;

    Edit2.text:=FloatToStrF(w,ffFixed,4,4);

end;

reszta to już pikuś :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1