在 Access 中减去时间字段

Subtract time fields in Access

我在Access 2013 中有一个table,它将跟随日常的出勤工作。 一天,人们需要工作8个小时。 这是 table 的屏幕截图:

列总计 = 截止时间 - 起始时间,这样就可以了。

缺少列 = 8-Format(24*Int([Total])+Hour([Total]);"0") & ":" & Format([Total];"nn" )

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

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

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

如何计算?

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

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

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;

对于任何 [总计] 大于 8 小时的情况,也许您可​​能更愿意将 [缺失] 显示为负数价值。如果是这样,请替换此表达式 ...

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