日期计算 - 如果未指定日期,如何使用今天的日期

时间:2015-10-07 19:26:33

标签: ms-access ms-access-2010

我有一个关于Microsoft Access 2010的问题。我正在处理一个继承的投诉数据库,并且我被要求提供一份报告,概述投诉有多长时间/或者是活跃的。

使用以下内容,我可以计算投诉开始时和投放结束时的差异,并显示活动天数。

DaysActive: DateDiff("d",[COMPLAINTS]![DateRcvd],[COMPLAINTS]![DateClosed])

我的问题是,如果投诉没有结束,我就不会获得退还的价值。有没有办法修改表达式,以便如果DateClosed为空,它将使用当前日期?

2 个答案:

答案 0 :(得分:2)

假设这是一个查询表达式,db引擎支持返回今天日期的Date()函数。因此,当IIf为空时,您可以使用Date()表达式为DateClosed提供DateClosed

DateDiff("d", COMPLAINTS.DateRcvd, IIf(COMPLAINTS.DateClosed Is Null, Date(), COMPLAINTS.DateClosed))

如果始终在Access会话中运行查询,则可以使用Nz代替IIf ...

DateDiff("d", COMPLAINTS.DateRcvd, Nz(COMPLAINTS.DateClosed, Date()))

请注意,Nz是一个VBA函数,并且db引擎直接支持IIf,因此理论上IIf应该更快。但是在你的背景下可能无法察觉到这种差异。

答案 1 :(得分:0)

尝试使用它。

DaysActive: DateDiff("d",Nz(COMPLAINTS.DateRcvd, Date()),[COMPLAINTS]![DateClosed])

Nz将检查日期是否可用,如果没有,它将使用DATE()函数替换今天的日期。