【发布时间】:2016-06-28 18:48:26
【问题描述】:
我知道这个问题已经被问过好几次了,但我认为这有点独特。 我有一个 MS Access 数据库,它有一个 DateTime 字段,我需要将其与日期 >= '1/1/2016' 或任何其他日期进行比较。
我的基本查询如下
SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs
为了比较日期,我知道我必须做 WHERE Dtime >= #1/1/2016#
问题是,日期/时间比较是在我正在运行的另一个软件中自动输入的,因此无法更改语法。
SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016'
整个 WHERE 子句是根据我指定为 DateTime 字段的字段自动输入的。
我尝试过的如下
SELECT TOP 100 CDate(Format([DTime], 'mm/dd/yyyy hh:nn:ss AM/PM')) AS LogTime, PEvent, FName, LName FROM EventLogs WHERE 'DTime' >= '1/1/2016'
这会返回结果,但遗憾的是它无法正确比较日期。有谁知道我怎么能做到这一点?任何帮助将不胜感激!
提前谢谢你
在 ODBC 连接中软件和数据库之间的连接,启用 ANSI 92。
【问题讨论】:
-
所以为了澄清,这个位:DTime >= '1/1/2016' 是自动生成的,你不能编辑它?对吗?
-
为什么
'DTime'在引号中?您能否扩展一下“问题是,日期/时间比较会自动输入到我正在运行的另一个软件中,因此无法更改语法。”方法?这是否意味着整个WHERE DTime >= '1/1/2016'被添加到其他软件中?其他软件是什么?您是如何在其中进行查询的? -
正确,整个 'WHERE DTime >= '1/1/2016'' 语句由其他软件生成,无法编辑。只能编辑 WHERE 子句之前的语句。我认为专注于在 Access 中生成正确的输出而不是处理外部软件会更容易。因此,我需要始终使用
WHERE DTime >= '1/1/2016'创建正确的输出。 -
不幸的是,
WHERE DTime >= '1/1/2016'在语法上不正确。如果你无法改变,那你就是一种 SOL。 -
有没有办法编写SELECT语句来正确处理比较?连接到 MDB 文件的不同 ODBC 驱动程序怎么样?我现在正在使用带有系统 DSN 的 64 位 Access MDB 驱动程序。
标签: database ms-access ms-access-2010 ms-access-2013