【问题标题】:SQL to compare date held in access to today's date not workingSQL来比较在访问今天的日期不工作的日期
【发布时间】:2015-11-28 22:31:38
【问题描述】:

我正在尝试运行一个查询,作为 VBA 代码的一部分,它查看日期字段中包含今天日期的所有记录并将它们写入记录集。但是,以下 SQL 语句不起作用。 它不返回任何记录,即使 DateEntered 字段中明确包含今天日期的记录。

dim cn as new adodb.connection
dim rs as new adodb.recordset
dim SQL as string
SQL = "SELECT * FROM tbl1LinkAuths WHERE DateEntered = #" & Date & "# "
Debug.Print SQL
cn.Open cnDB
rs.Open SQL, cn, , adLockPessimistic

我一直使用这种形式的数据库连接,它适用于我代码中的其他查询,只是日期识别出了问题。

【问题讨论】:

  • 至少使用BuildCriteria形成正确的日期/时间格式SQL = "SELECT * FROM tbl1LinkAuths WHERE " & BuildCriteria("DateEntered",dbDate,Date)
  • 日期的格式可能因存储它们的服务器而异。您是否尝试过在没有日期匹配的情况下获取前 10 条记录并比较(通过 MsgBox)显示的日期与在 VBA 中输入的日期字段
  • DateEntered 有时间部分吗?
  • 有可能,您的日期存储了不同的时间,而您要比较的时间根本没有时间,反之亦然

标签: sql excel vba date ms-access


【解决方案1】:

您有多种选择:

SQL = "SELECT * FROM tbl1LinkAuths WHERE DateEntered = Date()"

或:

Dim DateToday As String
DateToDay = Format(Date, "yyyy\/mm\/dd")
SQL = "SELECT * FROM tbl1LinkAuths WHERE DateEntered = #" & DateToDay & "# "

【讨论】:

  • SQL = "SELECT * FROM tbl1LinkAuths WHERE DateEntered = Date()" 奏效了。
  • 不敢相信这么简单。我一直在尝试各种日期转换组合。非常感谢。
猜你喜欢
  • 2013-03-27
  • 2020-04-13
  • 2019-03-03
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多