gpt4 book ai didi

sql - 为什么我的日期条件在使用 DCount 的 MsysObjects 查询中过滤不正确?

转载 作者:行者123 更新时间:2023-12-05 00:13:14 25 4
gpt4 key购买 nike

我有一个包含约 500 个表的 Access 数据库,所有表中总共有约 16,000 行。我想统计“datecreated”字段在 2019 年 1 月 1 日之前的行数。

我试图通过查询 MsysObjects 并使用按日期筛选的条件为每个表执行 DCount 来执行此操作。

假设我在一个包含如下内容的数据集上执行此操作:

  • 表 1:总共 10 行,2019 年 1 月 1 日之前有 5 行

  • 表 2:总共 10 行,2019 年 1 月 1 日之前有 9 行

  • table3:共10行,2019年1月1日前0行

创建日期字段

我抽查了 500 张 table 中的一些。 “创建日期”字段的数据类型为:日期/时间。格式为 yyyymmdd。

我创建了一个搜索,我可以在其中按表获取所有行的计数,并且可以按各个字段过滤该搜索。但是,当我尝试按 datecreated 字段进行过滤时,我得到了奇怪的结果。它没有按我期望的方式过滤。

1。基线查询(无条件):

(效果很好!)

SELECT MsysObjects.Name, DCount("*",[Name]) AS RecordTotal
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~") AND ((Left$([Name],4))<>"Msys") AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

结果:

(结果符合预期)

名称 RecordTotal

表1 10

表2 10

表 3 10

2。将条件添加到 DCount 的查询(创建日期 < 01/01/2019):

SELECT MsysObjects.Name, DCount("*",[Name],"[datecreated]<" & #01/01/2019#) AS RecordTotal
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~") AND ((Left$([Name],4))<>"Msys") AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

预期结果:

名称 RecordTotal

表1 5

表2 9

表 3 0

实际结果:

名称 RecordTotal

表 1 0

表 2 0

表 3 0

3。将不同格式的条件添加到 DCount 的查询(创建日期 < 20190101):

SELECT MsysObjects.Name, DCount("*",[Name],"[datecreated]<" & #20190101#) AS RecordTotal
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~") AND ((Left$([Name],4))<>"Msys") AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

预期结果:

名称 RecordTotal

表1 5

表2 9

表 3 0

实际结果:

“查询表达式 DCount("*",[Name],[datecreated]<"& #20190101#' 中的日期语法错误。

4。将奇怪的条件添加到 DCount 的查询(datecreated > 01/01/9999):

SELECT MsysObjects.Name, DCount("*",[Name],"[datecreated]>" & #01/01/9999#) AS RecordTotal
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~") AND ((Left$([Name],4))<>"Msys") AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

预期结果:

名称 RecordTotal

表 1 0

表 2 0

表 3 0

实际结果:

名称 RecordTotal

表1 10

表2 10

表 3 10

最佳答案

这最终成功了:

SELECT MsysObjects.Name, DCount("*",[Name],"datecreated IS NOT NULL AND datecreated > #01-01-2019#") AS RecordTotal
FROM MsysObjects
WHERE (((Left$([Name],1))<>"~") AND ((Left$([Name],4))<>"Msys") AND ((MsysObjects.Type)=1))
ORDER BY MsysObjects.Name;

关于sql - 为什么我的日期条件在使用 DCount 的 MsysObjects 查询中过滤不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57529844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com