在 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]
我在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]