首页 > 解决方案 > 将 IIF 语句与 DateDiff 一起使用,True 不起作用

问题描述

  (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 的新手。

日期 就业长度

标签: sqlms-access

解决方案


自从我上次使用 ms-access 以来,它已经永远存在了,但我认为问题出在这部分:[Date Retired/Left] = NULL.

在我知道的每个数据库中,您无法将值与NULL- 结果将始终为falseor unknown。您需要将其更改为[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]

推荐阅读