【问题标题】:Date Query in Access Suddenly Stops WorkingAccess中的日期查询突然停止工作
【发布时间】:2017-10-24 21:15:14
【问题描述】:

我有一份我想按最近发生日期查看的项目列表。我目前正在使用此查询。

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;

您认为此查询停止捕获日期的潜在原因是什么?我数据库中的日期不是按时间顺序排列的,因为我必须手动输入过去发生的事件。任何帮助将不胜感激!

ID 89 之后的数据好像没有用了,昨天下午还好好的。我今天早上从 ID 59 添加。所有数据都以相同的方式通过一个表单添加:

【问题讨论】:

  • 日期的内部顺序无关紧要,因为没有内部顺序。您应该向我们展示使您的问题可重现的示例数据。在我的脑海中,也许你输入了一些错误的数据。
  • 您的日期是如何存储在数据库中的。它是实际的日期类型还是文本/字符串?我打赌后者,这意味着您必须在查询中将该字段转换为日期,或者修复您的表格以将日期存储为日期。 更新评论:鉴于您的屏幕截图,您肯定不会将这些日期存储为日期类型,因此在修复之前无法正确排序。
  • 我认为 Access 的 DateValue() 函数会让您好运,这样您就不必在桌子上胡闹了。它会减慢查询速度,但让您不必清理数据。尝试像SELECT Cleaning1, Max(DateValue(Date1)) AS most_recent FRom.... 这样的第一个查询,看看Access 是否可以在查询中将您的字符串日期转换为实际日期。您可能仍想花时间修复表格(您必须备份数据,转到表格属性并将该字段类型更改为“日期”,然后使用 DateValue() 从备份加载表格以在加载时进行转换)。
  • 真可惜。是的...使其成为任何 Access 的日期格式,以便 Access 知道它是存储在那里的日期并可以对其进行排序。否则你最终会得到一个lexicographical 排序,这绝对不是你想要的。祝新项目好运!您很快就会成为专家。
  • 我同意@JNevill。一个真实的日期自然会在右侧格式化,而您的所有日期都会在字段的左侧格式化。

标签: sql date ms-access ms-access-2010


【解决方案1】:

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

SELECT 
    Cleaning1, 
    Max(CDate(Date1)) AS most_recent
FROM 
    CleaningLog
GROUP BY 
    Cleaning1
HAVING 
    Max(CDate(Date1)) < Date() - 30;

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 2017-08-22
    • 2021-02-01
    • 2016-12-29
    • 2018-05-09
    • 2015-12-07
    • 2015-08-23
    • 2014-02-05
    相关资源
    最近更新 更多