2016-10-25 40 views
1

我有3個字段A,B和C在名爲TBL的MS Access表中。我正在嘗試使用日期差異函數以小時爲單位查找日期差異。我想用下面的代碼最小內部日期差異

SELECT Datediff("h",Min(A,B),C) FROM TBL 

上述功能給我用錯號碼與功能使用的參數錯誤找到最低場A,B和C.場之間的時間差我試圖去實現它查詢表達式。我怎樣才能實現上述

回答

0

您可以使用IIF此:

SELECT IIF(DATEDIFF("h", A, C) < DATEDIFF("h", B, C), 
      DATEDIFF("h", A, C), 
      DATEDIFF("h", B, C)) 
FROM TBL 

更新:

如果您想爲小時的那部分結果,你可以嘗試

DATEDIFF("m", A, C)/60.0 
+0

謝謝你的答案。你也可以告訴我,如果差異是30分鐘,我可以如何顯示0.5小時差。因爲截至目前爲止,少於1小時的任何事物都顯示爲0。 –

0

如果您希望找到絕對差異,您需要Abs:

SELECT 
    *, 
    IIf(Abs(DateDiff("h", A, C)) < Abs(DateDiff("h", B, C)), 
     Abs(DateDiff("h", A, C)), Abs(DateDiff("h", B, C))) As 
    HourDiffMin 
FROM 
    TBL 

如果 - 不是很清楚 - 如果還A和B之間的差異可能被退回,擴大國際金融研究所表達來彌補這一 - 頗有uggly:

SELECT 
    *, 
    IIf(Abs(DateDiff("h", A, B)) < 
     IIf(Abs(DateDiff("h", A, C)) < Abs(DateDiff("h", B, C)), 
      Abs(DateDiff("h", A, C)), Abs(DateDiff("h", B, C))), 
     Abs(DateDiff("h", A, B)), 
     IIf(Abs(DateDiff("h", A, C)) < Abs(DateDiff("h", B, C)), 
      Abs(DateDiff("h", A, C)), Abs(DateDiff("h", B, C)))) As 
    HourDiffMin 
FROM 
    TBL