2011-05-02 56 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