在Access中减去时间字段

时间:2015-05-29 14:35:01

标签: ms-access ms-access-2013

我在Access 2013中有一张表,它将跟随每日上班时间。 在一天中,人们需要工作8小时。 以下是该表的屏幕截图: enter image description here

列总数=时间直到 - 时间从而且没关系。

列丢失具有此= 8格式(24 * Int([总计])+小时([总计]);“0”)& “:”&格式([总]; “NN”)

问题在于缺少列。 如果在Total列中它表示一个人做了7个小时,那么在Missing列中需要1个小时(缺少1个小时才能完成8个小时的日常工作)

注意第二行和最后一行...由于某种原因,它无法正确计算...

当有30分钟......它没有计算正确...在最后一行,它应该是1:30缺失(一天完成8小时)

我该如何计算?

1 个答案:

答案 0 :(得分:1)

日期/时间值实际上是双精度浮点数。这意味着你可以直接对它们进行数学运算。在查询结果中,计算值可能会显示为双精度浮点数...但您可以使用Format()以所需的时间格式显示它们。

我在Access 2010中使用您的示例数据测试了此查询。它返回我认为您想要的结果。

SELECT
    t.[Time From],
    t.[Time Until],
    Format((t.[Time Until] - t.[Time From]), 'h:nn') AS [Total],
    Format(#08:00# - (t.[Time Until] - t.[Time From]), 'h:nn') AS [Missing]
FROM tblVolkan AS t;

对于 [Total] 大于8小时的任何情况,您可能更喜欢将 [Missing] 显示为负值。如果是这样,请替换此表达式......

IIf(#08:00# - (t.[Time Until] - t.[Time From]) < 0, '-', '')
    & Format(#08:00# - (t.[Time Until] - t.[Time From]), 'h:nn') AS [Missing]