ms-access - MS Access DateDiff 模糊日期(日月顺序)返回错误结果
问题描述
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)。
我该如何克服这个问题?
解决方案
问题不在于模棱两可的日期。仔细观察,我发现各种明确的日期返回错误的值。
问题是使用了我这样使用的 Nz 函数:
Min(NZ([开始日期], [分配日期]))
我的意思是取任一开始日期的最小值,但如果开始日期为 NULL,则指定日期的最小值。
什么工作是这样的:
Nz(Min([StartDate], Min(Assigned Date))
都修好了。
这就引出了问题。为什么只是有时?因为它与开始日期为 NULL 或非 NULL 无关。
感谢大家的反馈!
推荐阅读
- css - 媒体查询不覆盖网格模板列
- spring-boot - 更正应用程序的类路径,使其包含一个兼容版本的 org.springframework.boot.builder.SpringApplicationBuilder
- java - ReadXML+添加到 MySQL Xstream+ StaxEventItemReader + Spring Batch + Spring Boot
- javascript - 在 Helper 函数中渲染 JSX 元素数组
- javascript - 如何将一个数组分配给另一个数组?
- python - 使用 Python 将 CSV 文件转换为 json 对象数组
- java - IntelliJ 和 SonarQube ,局部变量是多余的
- c++ - 为什么 QFile::size() 不近似等于 QImage::sizeInBytes()?
- android - Android - 从服务启动活动时崩溃
- reactjs - 在“列表中的每个孩子都应该有一个唯一的“关键”道具”中找不到丢失的关键