Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算字段之间的时间差_Sql_Delphi - Fatal编程技术网

Sql 计算字段之间的时间差

Sql 计算字段之间的时间差,sql,delphi,Sql,Delphi,我正在临时表中计算时间。 我有以下字段:DATE\u FROM,DATE\u TO,TIME\u FROM,TIME\u TO 这些字段都是DateTime。 为了计算TIME\u FROM和TIME\u To之间的差值,我添加了一个 名为TIME\u DIFFERENCE的字段,也是日期时间字段。数据库为绝对数据库。因此,在我的TEMP的oncalculatefields事件中,我添加了: procedure TForm1.TEMPCalcFields(DataSet: TDataSet);

我正在临时表中计算时间。
我有以下字段:
DATE\u FROM,DATE\u TO,TIME\u FROM,TIME\u TO

这些字段都是DateTime。
为了计算
TIME\u FROM
TIME\u To
之间的差值,我添加了一个 名为
TIME\u DIFFERENCE
的字段,也是日期时间字段。数据库为绝对数据库。因此,在我的TEMP的
oncalculate
fields事件中,我添加了:

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

时差工作正常,但我遇到了一个困难:计算只在时间域之间工作。我不知道如何将
TIME\u FROM
链接到
DATE\u FROM
字段。因为如果我选择从到的时间为22:00:00,从到的时间为06:00:00,我会得到16个小时的差值(应该是8)。我如何才能做到这一点,使我的
时间从
开始,从
日期开始?最后一部分也是

在计算时差的地方编写sql查询

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

在Sql和Delphi中,日期/日期时间变量/字段包含数值

假设该值为1.0,则表示1天。1.5将代表1天12小时

所以,当你把22:00:00放到时间里,它的值是22/24。如果你把6:00:00放到时间上,变量的值是06/24,当你减去这些时,通常会得到16/24

我从你的问题中了解到的是,你要求的是今晚22:00和第二天早上06:00的差值。要进行正确的计算,您应该在Time_变量中添加1天。(06+24=30)30/24


还有一个小提示,让手术从另一个方向进行。不时地从。假设时间已经过去。

那么你认为我想做什么呢?:)也许你需要将日期和时间合并到计算中,或者使用delphi中的函数,或者将日期和时间合并到计算中的日期和时间-是的…这就是我需要的。TEMP.FieldByName('time_TO')。你的意思是DateTime+24吗?只需在一天内加上+1(+24会加上24天)