我正在TEMP表中进行一些时间计算
我有以下字段:DATE_FROM,DATE_TO,TIME_FROM,TIME_TO
。
这些字段都是DateTime
要计算TIME_FROM
和TIME_TO
之间的差异,我添加了一个计算值
名为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而TIME_TO
为06:00:00,我会得到16小时的差异(应该是8)。我如何才能完成此操作,以便TIME_FROM
从DATE_FROM
开始?最后一部分也是......
答案 0 :(得分:0)
在您计算时差的地方编写SQL查询。
SELECT Field1, Field2, (TIME_FROM - TIME_TO) AS TIME_DIFFERENCE FROM SOME_TABLE
答案 1 :(得分: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的夜晚区别。要进行正确的计算,您应该向Time_To变量添加1天。 (06 + 24 = 30)30/24。
还有一个小小的注释,让操作在另一个方向。时间 - 来自。假设Time-From已经过去了。