我會安裝TurboPower Orpheus。在您的使用聲明中包含OvcDate單元。這個例子是由柏林10.1建築師製作的,並且是相當向下兼容的。 Orpheus有許多版本。
procedure TForm2.SpeedButton1Click(Sender: TObject);
var
date1 : TDateTime;
date2 : TDateTime;
rdt1 : TStDateTimeRec;
rdt2 : TStDateTimeRec;
days : Integer;
seconds : Integer;
hrs : Integer;
min : Integer;
sec : Integer;
begin
date1 := StrToDateTime('01/05/2015 13:00');
date2 := StrToDateTime('02/05/2015 10:00');
rdt1.D := DateTimeToStDate(date1);
rdt2.D := DateTimeToStDate(date2);
rdt1.T := DateTimeToStTime(date1);
rdt2.T := DateTimeToStTime(date2);
DateTimeDiff(rdt1, rdt2, days, seconds);
hrs := seconds div SecondsInHour;
min := ((seconds - (hrs * SecondsInHour)) div SecondsInMinute);
sec := (seconds - (hrs * SecondsInHour) + (min * SecondsInMinute));
sec := sec;
// days = 30
// seconds = 75600
// hrs = 21
// min = 0
// sec = 0
end;
上面的例子確立了概念驗證並顯示了計算如何工作。您輸入的日期分別爲1.5.2015和2.5.2015,這就是我使用的日期。
我會設置適當的計算字段並將此公式放在OnCalc事件中。一定要建立一個機制來設置開始和停止日期時間字段。讓DBMS完成剩下的工作。我恰好是最受歡迎的Delphi作者之一。 http://cc.embarcadero.com/PopularAuthors.aspx
我不知道FastReports是否會完成這筆交易,但您可能會考慮在您的數據集組件中使用計算字段並在此處進行總和計算。你使用的是什麼類型的日期和時間字段? –
你說得對。同時,我在數據集sql CAST(DATE_FROM as datetime)+ CAST(TIME_FROM as time)中進行了強制轉換AS DATE_TIME_FROM 我可以計算這些生成的字段在SQL中的差異嗎?例如: DATE_TIME_TO - DATE_TIME_FROM? – Volkan
在Sql中有兩次強制轉換我得到了以下結果: 2016-01-13 09:15:00.000 \t 2016-01-13 14:30:00.000 – Volkan