【问题标题】:My Query is not giving the right results in access我的查询没有给出正确的访问结果
【发布时间】:2016-08-11 22:19:37
【问题描述】:
SELECT (SignIn.VisitorFirstName & " " & SignIn.VisitorLastName) AS [Visitor Name], SignIn.SignInDateTime AS [Sign In Time], ([UserList.FirstName] & " " & [UserList.LastName]) AS Reason
FROM SignIn INNER JOIN UserList ON SignIn.AssignedPO = UserList.POid
WHERE (((SignIn.Complete)=No) AND ((Format([SignInDateTime],"Short Date")) Between #8/8/2016# And #8/10/2016#))
ORDER BY SignIn.SignInDateTime;

我正在获取范围之外日期的值。

查询运行但返回错误值。 (见下图) **

来自 cmets 的编辑:它在 8 月 8 日之前返回值

**

我的 DateTime 字段 (SignInDateTime) 的属性

【问题讨论】:

  • 好的。因此,您声明您获得了超出范围的值,但没有看到 SignInDateTime 列的任何数据,您认为任何人都可以说出可能是什么问题?此外,数据是什么样的,您对查询有什么期望? 需要更多信息
  • 我的结果是获取8/8之前的数据
  • 请告诉我你为什么拒绝投票。我不是要您为我做这项工作,而是要解释为什么我的查询没有给出任何错误以及为什么它在 2016 年 8 月 8 日之前显示值。它在 2016 年 8 月 10 日之后不显示值
  • @softwareisfun 虽然我不是投反对票的人,但我猜可能是因为问题不清楚。如果没有源数据和预期数据,我这样做了,并且有问题类型的问题很难回答。要给出一个好的答案,需要三个部分:之前的数据、查询和预期的输出。您的问题缺少三项中的两项。

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


【解决方案1】:

不确定这个转换/比较在做什么

((Format([SignInDateTime],"Short Date"))

您可以安全地使用 CDate 或仅使用字段本身 - 无论如何,它看起来像是一个日期时间字段

如果是日期/时间字段,请尝试更改此字段

((Format([SignInDateTime],"Short Date"))

到此

([SignInDateTime]

【讨论】:

  • 这显示了 8 月 8 日的日期,但没有显示 8 月 10 日的日期。我以为 And 包含了开始和结束。似乎是 8/8 和 8/9
  • 您的 BETWEEN 命令在 8 月 10 日结束 - 如果您想包括 8 月 10 日的所有时间,请将时间 23:59:59 添加到结束日期 - 即。 #8/10/2016 23:59:59#
  • 选择 SignIn.VisitorFirstName As [First Name], SignIn.VisitorLastName As [Last Name], SignIn.SignInDateTime As [Sign In Time] FROM SignIn WHERE (((SignIn.Complete)=No) AND ((SignIn.[SignInDateTime]) #8/11/2016# 和 #8/12/2016 23:59:59#)) ORDER BY SignIn.SignInDateTime;
  • 我添加了行以使日期在 8/10 到 8/12 之间。我返回 0 行
  • 不错的移动目标 - 它是否适用于您 8 月 10 日的数据?我怀疑现在添加数据会破坏它 - 用您的实际数据和新的实际查询更新您的问题。就像我们尝试修复所有问题两次 - 您可能添加了默认为 "Complete=Yes" 的行
猜你喜欢
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
相关资源
最近更新 更多