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。但是我相信datediff函数会使日月顺序混乱,并且返回零(加上我的1 = 1)。
我该如何克服这个问题?
答案 0 :(得分:0)
问题不是日期含糊。仔细观察,我发现各种不明确的日期返回了错误的值。
问题是我正在像这样使用Nz函数:
Min(NZ([开始日期],[分配日期])
我的意思是取开始日期的最小值,但是如果开始日期为NULL,则取分配日期的最小值。
这是什么工作:
Nz(Min([StartDate],Min(Assigned Date))
全部固定。
请问这个问题。为什么只有有时候呢?因为与开始日期为NULL或不为NULL无关。
感谢大家的反馈!