Sql Access中的日期查询突然停止工作

Sql Access中的日期查询突然停止工作,sql,date,ms-access,ms-access-2010,Sql,Date,Ms Access,Ms Access 2010,我有一个列表,列出了我想查看的最新发生日期的项目。我目前正在使用此查询 SELECT Cleaning1, Max(Date1) AS most_recent FROM CleaningLog GROUP BY Cleaning1; 昨天我上班的时候,它工作了,但突然停止了工作。它不会显示某些项目的最近事件发生日期。我想知道为什么这会突然停止工作。我用这段代码向四个查询中添加了日期参数。当它停止正常工作时,我决定创建一个没有日期参数的测试查询,它仍然不会显示我键入的最新事件 我试着在代码的日期

我有一个列表,列出了我想查看的最新发生日期的项目。我目前正在使用此查询

SELECT Cleaning1, Max(Date1) AS most_recent
FROM CleaningLog
GROUP BY Cleaning1;
昨天我上班的时候,它工作了,但突然停止了工作。它不会显示某些项目的最近事件发生日期。我想知道为什么这会突然停止工作。我用这段代码向四个查询中添加了日期参数。当它停止正常工作时,我决定创建一个没有日期参数的测试查询,它仍然不会显示我键入的最新事件

我试着在代码的日期部分使用,=符号,但似乎没有任何东西能够捕捉到我今天早上添加的日期。我应该提到的是,这是我对具有日期参数的代码所做的:

SELECT Cleaning1, Max(Date1) AS most_recent
FROM CleaningLog
GROUP BY Cleaning1
HAVING Max(Date1) < Now() - 30;
选择Cleaning1,Max(Date1)作为最新
从清理日志
按清洗分组1
最大(日期1)
您认为此查询停止捕获日期的潜在原因是什么?数据库中的日期不是按时间顺序排列的,因为我必须手动键入过去发生的事件。任何帮助都将不胜感激

它似乎不会使用ID 89之后的数据。昨天下午天气很好。我是今天早上从59号身份证加上去的。所有数据都是以相同的方式通过以下表格添加的:


将文本日期转换为真实日期:

SELECT 
    Cleaning1, 
    Max(CDate(Date1)) AS most_recent
FROM 
    CleaningLog
GROUP BY 
    Cleaning1
HAVING 
    Max(CDate(Date1)) < Date() - 30;
选择
清洁1,
最大值(CDate(日期1))为最近值
从…起
清理日志
分组
清洁1
有
最大值(CDate(Date1))
日期的内部顺序是不相关的,因为没有内部顺序。您应该向我们展示使您的问题重现的样本数据。也许你输入了一些错误的数据。你的日期是如何存储在数据库中的。它是实际日期类型还是文本/字符串?我打赌是后者,这意味着您必须在查询中将字段强制转换为date,或者修复表以将日期存储为date。更新注释:根据您的屏幕截图,您肯定没有将这些日期存储为日期类型,因此在修复之前,您无法对其进行正确排序。我认为Access的
DateValue()
函数会给您带来好运,这样您就不必在表中捣乱了。它会减慢查询速度,但可以避免您清理数据。尝试第一个查询,如
选择Cleaning1,Max(DateValue(Date1))作为最新的FRom…
并查看Access是否可以将字符串日期转换为查询中的实际日期。您可能仍然想花时间修复表(您必须备份数据,转到表属性并将该字段类型更改为“日期”,然后使用
DateValue()
从备份中加载表,以便在加载时进行转换)。这太可惜了。赞成。。。使其成为Access的日期格式,以便Access知道它是存储在其中的日期,并可以对其进行排序。否则你会得到一个排序,这绝对不是你想要的。祝你在新项目上好运!你很快就会成为专家的。我同意@jnevil的说法。真正的日期自然会设置为右侧,而您的所有日期都设置为字段左侧。