tblDurations
TaskID : Number
Assigned Date : Date/Time
Start Date : Date/Time
End Date : Date/Time
SELECT TaskID,
Count(TaskID) As [Task Count],
Min(Nz([Start Date], [Assigned Date])) as [Min of Start Date],
Max([End Date]) as [Max of End Date],
DateDiff("d", Min(Nz([Start Date], [Assigned Date])), Max([End Date])) + 1 as [Date Range]
FROM tblDurations
GROUP BY TaskID
输出:
TaskID Task Count Min of Start Date Max of End Date Date Range
1 3 16/08/2018 10/01/2019 1
2 2 4/09/2017 07/09/2017 4
3 3 13/09/2017 08/01/2018 118
我正在获得第1行(TaskID = 1)中显示的临时行,该行应该等于148!
经过大量的检查后,我确定这种情况发生在含糊不清的日期。我的意思是指日期和月份的值可以相互混淆。
我在澳大利亚的日期格式是dd / mm / yyyy。但是我相信约会函数会混淆日期和月份的顺序并返回零(加上我的1 = 1)。
我怎样才能克服这个问题?
问题不在于模棱两可的日期。仔细观察,我发现各种不明确的日期都会回归不好的价值观。
问题是使用了我正在使用的Nz函数:
最小(新西兰([开始日期],[指定日期]))
我采取的意思是取开始日期的最小值,但如果开始日期确实为NULL则为指定日期的最小值。
这是什么工作:
Nz(Min([StartDate],Min(指定日期))
全部固定。
这引出了一个问题。为什么只有时候?因为它与Start Dates无关或不是NULL。
谢谢大家的反馈!