【问题标题】:Calculate time difference between fields计算字段之间的时间差
【发布时间】:2014-03-06 05:15:57
【问题描述】:

我正在 TEMP 表中进行一些时间计算。
我有以下字段:DATE_FROM,DATE_TO,TIME_FROM,TIME_TO.
这些字段都是日期时间。
为了计算 TIME_FROMTIME_TO 之间的差异,我添加了一个计算 名为TIME_DIFFERENCE 的字段也是日期时间字段。数据库是绝对数据库。因此,在我的 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 开始?以及结尾部分......

【问题讨论】:

    标签: sql delphi


    【解决方案1】:

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

    假设值为 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 是过去。

    【讨论】:

    • TEMP.FieldByName('TIME_TO').AsDateTime +24 是这个意思吗?
    • 一天加1(+24加24天)
    【解决方案2】:

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

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

    【讨论】:

    • 你认为我想做什么? :)
    • 也许你需要结合日期和时间DATE_FROM + TIME_FROM计算,或者使用delphi中的函数HourSpan或者HoursBetween
    • 结合日期和时间 DATE_FROM + TIME_FROM 计算 - 是的......这就是我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2016-04-23
    • 2014-09-21
    相关资源
    最近更新 更多