使用带有DateDiff的IIF语句,True不起作用

时间:2018-05-01 18:28:50

标签: sql ms-access

  (SELECT IIF([Date Retired/Left] = NULL, DateDiff("yyyy", [Date Employed],Now()),
DateDiff("yyyy",[Date Employed],[Date Retired/Left])) 
FROM [Employment History] 
WHERE [Employment History].EmployeeID = [Training History].EmployeeID) 
AS [Time Employed]

这是一个子查询,如果[Date Retired / Left]保留一个日期,则返回正确的值,但是当它没有保留日期,即没有离开或退休时我想收集到期的工作时间。我试图使用Now()命令但无法使其工作,在这些字段中接收空白。

道歉,如果这是一个简单的错误,我是本周第一次尝试SQL的新手。

Dates EmploymentLengths

1 个答案:

答案 0 :(得分:2)

自从我上次使用ms-access以来,它一直是永恒的,但我认为问题在于这一部分:[Date Retired/Left] = NULL

在我知道的每个数据库中,您都无法将值与NULL进行比较 - 结果将始终为falseunknown。您需要将其更改为[Date Retired/Left] IS NULL

所以你的子查询应该是这样的:

(SELECT IIF([Date Retired/Left] IS NULL, 
             DateDiff("yyyy", [Date Employed], Now()),
             DateDiff("yyyy", [Date Employed], [Date Retired/Left])
            ) 
FROM [Employment History] 
WHERE [Employment History].EmployeeID = [Training History].EmployeeID) 
AS [Time Employed]