2014-03-06 204 views
0

我正在TEMP表中進行一些時間計算。
我有以下字段:DATE_FROM,DATE_TO,TIME_FROM,TIME_TO
這些字段都是DateTime。
要計算TIME_FROM和之間的差異,我添加了一個計算的 字段,這個字段也稱爲TIME_DIFFERENCE,它也是DateTime字段。數據庫是絕對數據庫。所以,在我的TEMP的oncalculate領域的事件我已經加入:計算字段之間的時間差

procedure TForm1.TEMPCalcFields(DataSet: TDataSet); 
begin 
TEMP.Fields.FieldByName('TIME_DIFFERENCE').AsDateTime := 
      (TEMP.FieldByName('TIME_FROM').AsDateTime) - 
      (TEMP.FieldByName('TIME_TO').AsDateTime); 
end; 

時間差下工作正常,但我遇到了困難:計算只適用時間字段之間。我不知道如何將TIME_FROM鏈接到DATE_FROM字段。因爲如果我選擇TIME_FROM爲22:00:00和爲06:00:00,我得到16小時差(應該是8)。我怎樣才能做到這一點,所以我的TIME_FROMDATE_FROM開始?和末端部分以及...

回答

0

在Sql和Delphi中,Date/DateTime變量/字段包含一個數值。

假設值爲1.0,則表示1天。 1.5代表1天和12小時。

因此,當您將22:00:00放入Time_From中時,其值將爲22/24。如果你將6:00:00放到time_to中,那麼當你減去這些值時,變量的值將會是06/24,你通常會得到16/24。

我從你的問題中瞭解到,你在第二天早上22:00和06:00要求不同的夜晚。要進行正確的計算,您應該將1天添加到Time_To變量。 (06 + 24 = 30)30/24。

還有一個小紙條,反過來進行操作。從時間到時間。假設Time-From是過去的。

+0

TEMP.FieldByName('TIME_TO')。AsDateTime +24是你的意思嗎? – user763539

0

編寫SQL查詢您計算時間差的地方。

SELECT Field1, Field2, (TIME_FROM - TIME_TO) AS TIME_DIFFERENCE FROM SOME_TABLE 
+0

你覺得我想要做什麼? :) – user763539

+0

也許你需要結合日期和時間'DATE_FROM + TIME_FROM'計算,或使用函數在delphi [HourSpan](http://docwiki.embarcadero.com/Libraries/XE5/en/System.DateUtils.HourSpan)或[HoursBetween](http://docwiki.embarcadero.com/Libraries/XE5/en/System.DateUtils.HoursBetween) –

+0

結合日期和時間DATE_FROM + TIME_FROM計算 - 是...這就是我需要的。 – user763539