2011-05-02 58 views
0

我在其中一个表中有两列:Arrival_TimeLeaving_Time。 两者都是格式如下的时间字段:HH:MM:SS如何减去访问sql查询中次数的两列

我想从Arrival_Time减去Leaving_Time,例如:

到达时间:02:00:00
Leaving_time:二时45分00秒= 45分钟。

我尝试此查询:

SELECT (Jobs.Leaving_time) - (Jobs.Arrival_Time) AS Time_Difference 
FROM Technicians,Jobs, Tech_Allocation 
WHERE Jobs.Job_ID=Tech_Allocation.Job_ID  
    AND Tech_Allocation.Technician_ID=Technicians.Technician_ID 
ORDER BY (Jobs.Leaving_time) - (Jobs.Arrival_Time) ASC; 

查询运行,但相减的结果显示在小数不如分钟,因为我希望他们。

谢谢

+0

显示为小数?什么是acutal输出? – 2011-05-02 21:20:43

+0

这是显示的输出示例:3.47222222222221E-03 – Tantoon 2011-05-02 21:25:20

回答

1

在你的问题中,你说过你希望持续时间显示为分钟。然而,在评论中,你说你希望结果显示为小时:分钟:秒。

使用Format()函数将您的浮点值显示为Hour:Minutes:Seconds。

SELECT Format(j.Leaving_time - j.Arrival_Time, "hh:nn:ss") AS Time_Difference 
FROM Technicians AS t, Jobs AS j, Tech_Allocation AS ta 
WHERE j.Job_ID = ta.Job_ID  
    AND ta.Technician_ID = t.Technician_ID 
ORDER BY 1 ASC; 

请注意,此方法仅适用于小于24小时的Time_Differences。

编辑:

  1. 我在ORDER BY指的第一个项目在字段列表中使用1。这比在ORDER BY中编写字段表达式更方便。
  2. 你不需要在这里的ORDER BY ASC。
  3. 我会使用Access的查询设计器来连接INNER JOIN表达式的表格,而不是旧式的WHERE方法。
  4. 为表格分配简短有意义的别名可以使SQL更加简洁易懂,让人们更容易理解。
+0

它现在完美工作,非常感谢 – Tantoon 2011-05-02 22:04:32

3

在Access中,你会想看看the DateDiff() function

+0

DateDiff()不适用于我 – Tantoon 2011-05-02 21:41:27

+0

@Tantoon。 DateDiff应该可以工作:'DateDiff('n',Jobs.Arrival_Time,Jobs.Leaving_time)' – 2011-05-02 22:05:20