Database 比较MS Access中的日期,其中日期>;=';2016年1月1日&x27;
我知道这个问题已经被问过好几次了,但我认为这有点独特。 我有一个MS Access数据库,其中有一个DateTime字段,我需要将该字段与日期>='1/1/2016'或任何其他日期进行比较 我的基本问题如下Database 比较MS Access中的日期,其中日期>;=';2016年1月1日&x27;,database,ms-access,ms-access-2010,ms-access-2013,Database,Ms Access,Ms Access 2010,Ms Access 2013,我知道这个问题已经被问过好几次了,但我认为这有点独特。 我有一个MS Access数据库,其中有一个DateTime字段,我需要将该字段与日期>='1/1/2016'或任何其他日期进行比较 我的基本问题如下 SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs 为了与日期进行比较,我知道我必须在Dtime>=#1/1/2016的地方进行比较# 问题是,日期/时间比较会自动输入到我正在运行的另一个软件中,因此语法无法更改 SELECT
SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs
为了与日期进行比较,我知道我必须在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'
这会带来结果,但不幸的是,它无法在日期上正确比较。有人知道我怎样才能做到这一点吗?任何帮助都将不胜感激
先谢谢你
在启用ANSI 92的情况下,软件与数据库之间的连接采用ODBC连接
正确,将生成整个“WHERE DTime>=”1/1/2016“语句 由其他软件创建,无法编辑 正如Brad已经评论的那样,这不是Access SQL,因此永远不会起作用 您唯一的选择是将查询更改为传递查询,该查询将发送以下内容:
SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016'
对于理解语法的SQL Server来说。SQL语句永远是字符串,一个字符序列。它可以是VBA代码中的字符串变量或常量,也可以是查询对象的
SQL
属性。在任何情况下,可在执行前对其进行操纵:
在查询对象中:
MyQuery.SQL=Replace(MyQuery.SQL, "'", "#")
MyQuery.Execute
在VBA中:
Dim Dbs As DAO.Database
Set Dbs = CurrentDB 'Could also be: Set Dbs = OpenDatabase(DatabaseFileLocation)
Dbs.Execute Replace("SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs WHERE DTime >= '1/1/2016'", "'", "#")
或者可以是:
Dbs.Execute "SELECT TOP 100 DTime, PEvent, FName, LName FROM EventLogs " & Replace("WHERE DTime >= '1/1/2016'", "'", "#")
想法是:如果Access可以运行它,Access可以事先修改它。如果未修改语句,则子句将在
String
值上执行,而不是在DateTime
值上执行 为了澄清,这个位:DTime>='1/1/2016'是自动生成的,您不能编辑吗?正确吗?为什么'DTime'
在引号中?您能否进一步说明“问题是,日期/时间比较自动输入到我正在运行的另一个软件中,因此语法无法更改。”这意味着什么?这是否意味着在其他软件中添加了整个,其中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驱动程序如何?我现在正在将64位Access MDB驱动程序与系统DSN一起使用。这些选项只是建议,可以以更适合您的系统的方式实现,只需遵循最后一个想法:如果Access可以运行它,Access可以事先修改它。