MS Access DateDiff不明确日期(日月订单)返回错误结果

问题描述 投票:0回答:1
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)。

我怎样才能克服这个问题?

ms-access datediff
1个回答
0
投票

问题不在于模棱两可的日期。仔细观察,我发现各种不明确的日期都会回归不好的价值观。

问题是使用了我正在使用的Nz函数:

最小(新西兰([开始日期],[指定日期]))

我采取的意思是取开始日期的最小值,但如果开始日期确实为NULL则为指定日期的最小值。

这是什么工作:

Nz(Min([StartDate],Min(指定日期))

全部固定。

这引出了一个问题。为什么只有时候?因为它与Start Dates无关或不是NULL。

谢谢大家的反馈!

© www.soinside.com 2019 - 2024. All rights reserved.