最小内部日期差异

Minimum inside Date Difference

我在 MS Access Table 中有 3 个字段 A、B 和 C,名为 TBL。我正在尝试使用日期差异函数查找以小时为单位的日期差异。我想找到最小字段 A、B 和字段 C 之间的日期差异。我尝试使用以下代码实现它

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

上面的函数给我一个错误,在查询表达式中与函数一起使用的参数数量错误。我怎样才能实现上述目标

您可以为此使用 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

如果你想找到绝对差异,你需要 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 之间的差异,请扩展 IIf 表达式以涵盖此 - 非常难看:

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